Qt4

2019-04-10  本文已影响0人  Mexplochin

本节目标:

从Hello Qt开始

Qt的编译运行过程

//hello.cpp
#include <QApplication>
#include <QLabel>
//argc: argument count   argv: argument vector
int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
    QLabel *label=new QLabel("<h2><i>Hello</i><font color=red>Qt</font></h2>");
    label->show();
    return app.exec();
}
  1. 头文件包含相关类定义
  2. 利用Qt自身支持的命令行参数创建QApplication对象
  3. 对象指针label指向显示“Hello Qt”的QLabel窗口部件(部件 widget:UI中的某个可视化元素,在Win中称 控件 control, 容器 container),标签可以使用HTML表示
  4. 一般使用QMainWindow、QDialog作为应用程序窗口,窗口会包含QMenuBar、QToolBar、QStatusBar等部件
  5. show()使部件显示,对部件的设置完成后再显示,避免设置时部件闪烁
  6. return app.exec();传递控制权给Qt
    进入事件循环(等待模式)->等待用户动作->动作使程序生成事件(event,如“鼠标按下”事件,在Win中称 消息)->产生响应执行函数。
  7. 程序的编译和运行:将helllo.cpp置于项目目录hello下,从cmd进入hello目录,命令qmake project生成hello.pro项目文件,再用命令qmake hello.pro生成makefile文件,make编译后会将可执行文件保存在debug文件夹中。(在cmd中进行编译,注意环境变量冲突问题,例如Qt4和anaconda的qmake混淆)
建立连接

程序如何响应用户动作

//quit.cpp
#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();
}

QObject::connect()将信号SIGNAL和槽SLOT连接起来,上例中,当button完成clicked后发射信号,槽自动执行其内函数

部件布局

如何利用信号和槽同步部件
如何用布局layout管理部件形状

//
#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;
   spinBox->setRange(0,130);

   QSlider *slider=new QSlider(Qt::Horizontal);
   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构建用户接口的方法:

  1. 声明所需窗口部件
  2. 设置部件属性
  3. 将部件添加到布局中,布局自动设置其位置和大小
  4. 利用信号和槽连接关联部件行为
上一篇下一篇

猜你喜欢

热点阅读