Qt学习总结-ui篇
控件设置透明度:
QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect(this); effect->setOpacity(0.9); //设置透明度 ui->widget->setGraphicsEffect(effect); //加在需要设置透明的控件上
控件设置圆角边框:
//通过控件的样式表即可实现
ui->widget->setStyleSheet(“border-radius:3px;”);
创建托盘图标:
//加在ico图标
QIcon icon = QIcon(“:/icofire.ico”);
setWindowIcon(icon);
//创建
trayIcon = new QSystemTrayIcon(this);
trayIcon=new QSystemTrayIcon(this);
//关联曹函数,用于捕捉图标点击事件
connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(activated (QSystemTrayIcon::ActivationReason)));
trayIcon->setIcon(icon);
//设置上下文菜单
//trayIcon->setContextMenu(this->trayIconMenu);
trayIcon->show();
窗口设置为无边框:
this->setWindowFlags(Qt::FramelessWindowHint);
控件重叠,即实现控件“浮动效果”:
在界面存在布局的情况下,是无法将连个控件重叠在一起的,如果我们要实现界面中一部分控件“浮动”其他控件上的效果,可以通过栈布局的方式来实现。然而在默认情况下,栈布局同时只能显示一帧画面,要做到栈布局中所有控件同时显示,要用到一下代码:
QStackedLayout*laylout=(QStackedLayout*)ui->stackedWidget->layout(); laylout->setStackingMode(QStackedLayout::StackAll);
QLabel标签添加点击事件:
QLabel没有特定的信号槽来让我们处理点击事件,需要通过一下方法:
为标签绑定点击事件的监听函数
ui->label ->installEventFilter(this);
重写窗体类的eventFilter()函数
bool MainForm::eventFilter(QObject *obj, QEvent *event){
if(obj==ui->label){
//过滤出单击事件
if (event->type() == QEvent::MouseButtonPress) {
//处理函数
return true;
}
}
//其他判断…
return QWidget::eventFilter(obj,event);
}
注意,处理完点击事件后,如果 return true,这终止事件处理,反之消息将继续传播下去。
QLabel 同时显示文字和图片:
QLabel 在QDisginer编辑时可以通过属性窗口设置图片和文字,但最终程序运行时是不会同时显示的,即这两个属性会相互覆盖,只显示其一。为达到图文同时显示,可通过重载QLabel的 paintEvent()函数来实现,若我们在属性中设置好了图片,需显示额文字,可通过以下方法:
void QCustLabel::paintEvent(QPaintEvent *event){
//先按默认防止进行标签绘制
QLabel::paintEvent(event);
QPainter painter(this);
//设置文字颜色
painter.setPen(Qt::white);
//要显示的可以作为一个成员变量
QString info=this->desInfo;
//设置文字信息的x坐标和y坐标
//此处用了水平居中和垂直居中
int x=this->width()/2-(this->fontMetrics().width(info)/2);
int y=this->height()/2+(this->fontMetrics().height()/2);
//绘出文字
painter.drawText(QPoint(x,y),info);
}
此方法中用到了 Qt的二维绘图类 QPainter,此处使用的方法还是比较简单的,关于QPainter使用总结,会在接下来的文章中给出。
由此,我们可以在label中随意指定文字、图片的显示方式。
QTableView的简单使用方法:
对于QTableView的内容修改,如设置表头、添加单元格内容,可不不直接操作该控件,操作控件的 model 即可。
tableModel=new QStandardItemModel;
//设置列数
tableModel->setColumnCount(3);
tableModel->setHeaderData(0,Qt::Horizontal,tr(“colum 0″));
tableModel->setHeaderData(1,Qt::Horizontal,tr(“colum 1″));
tableModel->setHeaderData(2,Qt::Horizontal,tr(“colum 2″));
//为QTableView添加model
ui->tableView->setModel(tableModel);
为QTableView添加行:
//清除所有行
//tableModel->removeRows(0,tableModel->rowCount());
for(int i=0;i<XXX;i++){
tableModel->setItem(i,0,new QStandardItem(“xxx”));
tableModel->setItem(i,1,new QStandardItem(“xxx”));
tableModel->setItem(i,2,new QStandardItem(“xxx”));
}
//表格控件根据内容自动调整宽度和高度
ui->tableView->resizeColumnsToContents();
ui->tableView->resizeRowsToContents();
Qt学习总结-ui篇的更多相关文章
- Qt学习总结-ui篇(二)
qccs定义圆角 border-radius:10px; 如果想给特定位置定义圆角,如: 左上角:border-left-top-radius:10px; 右下角色:border-right-bo ...
- QT学习:入门篇(三)
头文件: #ifndef CChatDisplaySet_h #define CChatDisplaySet_h #include "QtGui/QDialog" #include ...
- swift学习笔记-UI篇之UIImageView
1.基本使用 将要使用的图片拖入到项目里,我这里使用的是名为“1.jpg”的图片,然后创建UIImageView,并设置要显示的图片为"1.jpg"//1. 基本使用 let im ...
- qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果
应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...
- Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析
转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- QT学习第1天
QT学习第一天 坚持住!! 一 Qt概述 1.Qt发展历史 (1)1991年诞生(Haavard Nord/Eirik Chambe-Eng), (2)1994年创立Troll Tech(奇趣科技) ...
- 学习KnockOut第一篇之Hello World
学习KnockOut第一篇之Hello World 笔者刚开始学习KnockOut.写的内容就相当于一个学习笔记.且在此处向官网致敬,比较喜欢他们家的Live Example版块,里面有jsFiddl ...
- Qt入门之基础篇(三):掌握Qt4的静态编译基本方法
转载载请注明出处:CN_Simo. 导语: 前两章都提到过“静态编译”(Static Compilation),在Windows下一次静态编译差不多需要长达三个小时才能完成,而且还非常容易由于各种原因 ...
随机推荐
- 一道模板元编程题源码解答(replace_type)
今天有一同学在群上聊到一个比较好玩的题目(本人看书不多,后面才知是<C++模板元编程>第二章里面的一道习题), 我也抱着试一试的态度去完成它, 这道题也体现了c++模板元编程的基础和精髓: ...
- 开始研究Ray tracing
几个月前面试时Boss问过我一个问题--"除了scanline渲染方法,你还知道什么其他渲染方式?",我没答出来,至今记忆犹新. 前段时间摆弄Intel VTune时看了它的示例代 ...
- mysql数据类型区别
create table t1(c1 float(10,2), c3 decimal(10,2)); insert into t1 values(1234567.23, 1234567.23,1234 ...
- 7. Android框架和工具之 android-percent-support-lib-sample(百分比支持)
1. android-percent-support-lib-sample介绍: 谷歌最新的百分比布局库的示例项目.其实LinearLayout的layout_weight也能实现百分比效果,不过这个 ...
- onInterceptTouchEvent和onTouchEvent举例分析
首先自定义三个组件,其关系是:MyLayout在最上面,MySubLayout在MyLayout下面,MyView在MySubLayout下面. 一个点击事件进来,首先是DOWN动作,先是MyLayo ...
- 《Cortex-M0权威指南》之体系结构---存储器系统
转载请注明来源:cuixiaolei的技术博客 Cortex-M0处理器为32位处理器,所以具有最大4G的寻址空间.在体系结构上,存储器空间被划分位一系列的区域,每个区域都有推荐的用途,以提高不同设备 ...
- vb.net机房收费系统之组合查询
我个人一直认为,组合查询是机房收费系统的一个难点,尤其是用到三层之后,如果要为组合查询中的每一个查询建立一个显然是太麻烦了. 下面介绍一下我的方法,对大家起个参考作用. 我将该表中可输入的内容定义为一 ...
- JAVA 多态的一种实现
今天一个同事问我一个问题,就是关于子类,父类之间方法的调用这里的.这里我整理了一个小DEMO. 代码如下: 父类的代码: public abstract class ClassA { public f ...
- Oracle基础—表分区
一:表分区的应用场景 用于管理包含大量数据的表. 二:表分区的优点 1.提高数据的可以性 2.减少管理负担 3.改善语句的性能 三:分区的方式:(区间分区.散列分区.列表分区.组合分区) 1.区间分区 ...
- Sphinx 全文检索
什么是全文检索: 全文检索是指以文档的全部文本信息作为检索对象的一种信息检索技术.检索的对象有可能是文章的标题,也有可能是文章的作者,也有可能是文章摘要或内容. 简介: Sphinx是由俄罗斯人And ...