转:http://blog.sina.com.cn/s/blog_4ba5b45e0102e83f.html
以命令行的形式改变窗口的现实风格
./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.
//dlg.h
#include “ui_dlg.h”
class Dlg : public QDialog, public Ui::Dlg
{
Q_OBJECT
public:
Dlg(QWidget *parent = 0);
…
private slots:
void on_lineEdit_textChanged();
};
//dlg.cpp
#include “dlg.h”
Dlg::Dlg(QWidget *parent)
: QDialog(parent)
{
setupUi(this);
QRegExp regExp(“[A-Za-z][1-9][0-9]{0,2}”);
lineEdit->setValidator(new QRegExpValidator(regExp, this));
…
}
void Dlg::on_lineEdit_textChanged()
{
okBtn->setEnabled(lineEdit->hasAcceptableInput());
}
…
…
自动连接信号与槽
setupUi函数会自动将符合on_objectName_signalName()命名惯例的任意槽
与相应的objectName的signalName()信号连接到一起。上例中,建立了下面
的信号-槽关系:
connect(lineEdit, SIGNAL(textChanged(const QString &)),
this, SLOT(on_lineEdit_textChanged()));
删除父对象时,它的子对象会被自动删除
通过布局管理器来管理扩展对话框的窗口大小
layout()->setSizeConstraint(QLayout::SetFixedSize);
设计一个可扩展对话框的基本思路:
切换按钮;
信号-槽连接;
不可以改变尺寸大小的布局。
多页窗口部件有:QTabWidget, QToolBox
项目视图窗口部件(带滚动条):QListView, QTreeView, QTableView
为应用程序提供图片的方法:
把图片保存在文件中,并且在运行时载入它们;
把XPM文件包含在源代码中;
使用Qt的资源管理机制。
使用资源管理机制的方法:
1.将图片放在images/目录下;
2.在xxx.pro加入:RESOURCES = xxx.qrc
3.增加资源文件xxx.qrc, 内容形式如下:
images/icon.png
…
images/abc.png