《C++ GUI Qt4编程》第1章——Qt入门
1.1 Hello Qt
#include <QtWidgets/QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
// 创建了一个 QApplication 对象,用来管理整个应用程序所用到的资源。
// 这个QApplication构造函数需要两个参数,分别是argc和argv,因为Qt支持它自己的一些命令行参数。
QApplication a(argc, argv);
//QLabel* label = new QLabel("Hello Qt!");
QLabel* label = new QLabel("<h2><i>Hello</i> "
"<font color=red>Qt!</font></h2>");
// 使QLabel标签(label)可见。在创建窗口部件的时候,标签通常都是隐藏的,这就允许我们可以先对其进行设置然后再显示它们,从而避免了窗口部件的闪烁现象。
label->show();
// 将应用程序的控制权传递给Qt。此时,程序会进入事件循环状态,这是一种等待模式,程序会等候用户的动作,例如鼠标单击和按键等操作。
return a.exec();
}
1.2 建立连接
#include <QApplication>
#include <QPushButton>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QPushButton * button = new QPushButton("Quit");
QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));
button->show();
return app.exec();
}
1.3 窗口部件的布局
#include <QApplication>
#include <QHBoxLayout>
#include <QSlider>
#include <QSpinBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *window = new QWidget;
window->setWindowTitle("Enter Your Age");
QSpinBox *spinBox = new QSpinBox;
QSlider *slider = new QSlider(Qt::Horizontal);
spinBox->setRange(0, 130);
slider->setRange(0, 130);
QObject::connect(spinBox, SIGNAL(valueChanged(int)),
slider, SLOT(setValue(int)));
QObject::connect(slider, SIGNAL(valueChanged(int)),
spinBox, SLOT(setValue(int)));
spinBox->setValue(35);
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(spinBox);
layout->addWidget(slider);
window->setLayout(layout);
window->show();
return app.exec();
}
Qt程序员最常使用的方式是先声明所需的窗口部件,然后设置它们所应具备的属性。程序员把这些窗口部件添加到布局中,布局会自动设置它们的位置和大小。利用Qt的信号和槽机理,并通过窗口部件之间的连接就可以管理用户的交互行为。