Qt学习笔记--编程技巧总结

本文介绍了Qt界面设计的关键技术和编程技巧,包括如何使用Qt设计师生成窗口、信号与槽的连接方式、创建自定义窗口部件的过程及如何集成到Qt设计师中等。此外还涉及了对话框、菜单栏、工具栏、状态栏的设计方法。
摘要由CSDN通过智能技术生成

以命令行的形式改变窗口的现实风格
./xxx -style cde/motif/plastique

根据标签快捷键定位输入框
QLabel *label = new QLabel(tr("&New"));
QLineEdit *edit = new QLineEdit();
label->setBubby(edit);


默认按钮:当用户按下Enter的时候,能够按下对应的按钮
button->setDefault(true);

禁止按钮:显示为灰色,不和用户交互
button->setEnabled(false);

布局中占用其他的剩余空间
layout->addStretch();

设置窗口的固定高度和宽度
dlg->setFixedHeight(dlg->sizeHint().height());
dlg->setFixedWidth(dlg->sizeHint().width());


信号与槽:

  • 一个信号可以连接多个槽
  • 多个信号可以连接同一个槽
  • 一个信号可以与另一个信号连接
  • 连接可以被移除(disconnect)
  • 信号的参数必须和槽的参数相匹配,参数个数可以多于槽的参数个数,多余的参数将被忽略


利用Qt设计师生成窗口
生成文件dlg.ui;
继承Ui::Dlg.
 

自动连接信号与槽
setupUi函数会自动将符合on_objectName_signalName()命名惯例的任意槽
与相应的objectName的signalName()信号连接到一起。上例中,建立了下面
的信号-槽关系:
connect(lineEdit, SIGNAL(textChanged(const QString &)),
             this, SLOT(on_lineEdit_textChanged()));


删除父对象时,它的子对象会被自动删除

通过布局管理器来管理扩展对话框的窗口大小
layout()->setSizeConstraint(QLayout::SetFixedSize);

设计一个可扩展对话框的基本思路:

  1. 切换按钮
  2. 信号-槽连接
  3. 不可以改变尺寸大小的布局


多页窗口部件有:QTabWidget, QToolBox

项目视图窗口部件(带滚动条):QListView, QTreeView, QTableView

为应用程序提供图片的方法:

  • 把图片保存在文件中,并且在运行时载入它们
  • 把XPM文件包含在源代码中
  • 使用Qt的资源管理机制


使用资源管理机制的方法:

  1. 将图片放在images/目录下;
  2. 在xxx.pro加入:RESOURCES = xxx.qrc
  3. 增加资源文件xxx.qrc, 内容形式如下:


源代码中引用方式:setWindowIcon(QIcon(":/images/icon.png"));
或者 setWindowIcon(QIcon(":/title.png"));


创建菜单栏、工具栏、状态栏


模态对话框与非模态对话框
模态对话框典型例子:打开文件对话框,警告对话框
非模态对话框典型例子:查找对话框
模态对话框一般在堆中创建,非模态对话框一般在栈中创建
模态对话框使用exec()显示,非模态对话框使用show()显示


创建一个启动画面


MainWindow的中央窗口部件可以为:

  • 一个标准的Qt窗口部件
  • 一个自定义的窗口部件
  • 一个带布局管理器的普通QWidget
  • 一个切分窗口(QSplitter)
  • 一个多文档工作空间(QMdiArea)


读写平台无关的二进制文件
 

创建一个自定义窗口部件的过程:

  1. 选择一个合适的窗口部件
  2. 对它子类化
  3. 实现虚函数,改变它的行为


构建一个可以集成到Qt设计师中的窗口部件
 


自动调用的情况:

  • 窗口第一次显示
  • 大小改变
  • 被遮挡,然后再次显示

主动调用的情况:
update();
repaint(); // 不常用


窗口属性Qt::WA_StaticContents
当重新改变窗口部件的大小时,窗口部件的内容并没有发生改变,
而且内容仍旧保留从窗口左上角开始的特性。这样就可以避免重绘
已经显示的区域。

在设计师中集成自定义窗口部件的2种方法

  • 提升法:拖动一个自定义窗口的父窗口对象,右键->提示为...
  • 插件法:创建一个插件库


当应用程序的最后一个窗口关闭时,程序退出
在main中使用下面语句:
QObject::connect( qApp, SIGNAL(lastWindowClosed()), qApp, SLOT(quit()) );

键盘:
Qt::Key_Plus: 对数字小键盘起作用,对于大键盘,要同时按下Shift
Qt::Key_Enter: 对数字小键盘起作用

当定义一个函数时,如果没有用到其中的参数p,但又不想在编译时产生警告:
在函数的开头,使用宏
Q_UNUSED(p);

在QGraphicsItem的paint函数中,如果不希望线的宽度缩放,则
painter->setPen(color); //不指定pen的宽度,或者指定为0.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值