Qt4

作者: Mexplochin | 来源:发表于2019-04-10 20:22 被阅读0次

    本节目标:

    • 组合Qt功能创建简单GUI应用程序
    • 认识布局、信号和槽的概念
    从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();
    }
    
    • QObject::connect(spinBox,SIGNAL(valueChanged(int)),slider,SLOT(setValue(int)));关联spinBox部件和slider部件
    • QHBoxLayout *layout=new QHBoxLayout;定义布局管理器,用addWidget方法加入部件

    Qt构建用户接口的方法:

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

    相关文章

      网友评论

          本文标题:Qt4

          本文链接:https://www.haomeiwen.com/subject/nwapiqtx.html