您的位置:澳门新葡萄京最大平台 > 动作小游戏 > 入门例程

入门例程

发布时间:2019-09-06 15:46编辑:动作小游戏浏览(113)

      以 “Hello Qt” 为例,介绍怎么着创设一个 Qt 工程 。

    1  QLabel 例程

      QLabel 用来展现文本和图表,它三番四次自 QFrame (而 QFrame 承接自 QWidget)

    1.1  Hello Qt

      #1 和 #2 标记头文件,也可用五个总的来替代: #include <QtWidgets>

      #6 创建 QApplication 类对象,配合 #11 使任何程序步向事件循环境情形况,等待顾客的动作;

      #8 创立 QLabel 对象 label 并赋初值 “Hello Qt!”, 接着 #9 突显出该对象。

     1 #include <QApplication>
     2 #include <QLabel>
     3 
     4 int main(int argc, char *argv[])
     5 {
     6     QApplication app(argc, argv);
     7 
     8     QLabel label("Hello Qt!");
     9     label.show();
    10 
    11     return app.exec();
    12 }
    

      自动生成的工程安顿文件 .pro 如下:

    QT += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = HelloQt
    TEMPLATE = app
    
    SOURCES += main.cpp
    

      支持 HTML 风格

    QLabel label("<h2><i>Hello</i>" "<font color=red>Qt!</font></h2>");
    

      图片 1

    1.2  智能指针

      上面程序因为简短,关闭后,操作系统会承受回收内存,不过这种 new 了今后不 delete 的法子是不推荐的。

    8  QLabel *label = new QLabel("Hello Qt!");
    9  label->show(); 
    

    1)  Qt 的智能指针

      即使利用指针,能够考虑 Qt 中的智能指针 QScopedPointer

     QScopedPointer<QLabel> label(new QLabel("Hello Qt!"));
    

    2)  c++ 的智能指针

      也可应用 c++ 中的智能指针 std::unique_ptr,注意包罗头文件 #include <memory>

    std::unique_ptr<QLabel> label = std::make_unique<QLabel>("Hello Qt!");
    

      

    2  QPushButton 例程

      使用 QPushButton 类,新建二个开关指针 btn,设置其父窗口为 &window,那样当 window 被灭绝,就能够活动删除 btn,那其实是 Qt 中有意的“具备权”问题,它可使编制程序中 new 了不用 delete

      connect 将能量信号 clicked() 和槽函数 quit() 连接了四起,当点击按键时,clicked() 复信号被发生,接着槽函数被实施,于是程序退出。那称为 "随机信号槽" 机制。

     1 #include <QtWidgets>
     2 
     3 int main(int argc, char *argv[])
     4 {
     5     QApplication app(argc, argv);
     6 
     7     QWidget window;
     8     window.resize(200, 150);
     9     window.setWindowTitle("Button");
    10     window.show();
    11 
    12     QPushButton *btn = new QPushButton("Quit", &window);
    13     QObject::connect(btn, SIGNAL(clicked()), &app, SLOT(quit()));
    14     btn->move(50,50);
    15     btn->show();
    16 
    17     return app.exec();
    18 }
    

      分界面如下:

      图片 2

     

    3  QSpinBox 和 QSlider

      完结如下分界面,蕴含 spinbox 和 slider 五个控件,且两岸的数值相互关联。
      图片 3 

        #1 ~ #4 满含所需头文件,#10 和 #11 新建窗口部件,作为顶层窗口 (top-level), #13 ~ #16 新建 spinbox 和 slider 控件指针,取值范围 0~130;

        #18 和 #19 将两个连接起来, 使得 spinbox 和 slider 的数值保持实时同步; #22 新建 layout 布局管理器指针;

        #23 和 #24 将八个控件参预布局管理器 layout 中, #26 在窗体部件上设置布局管理器 layout,此时 QHBoxLayout 以及它包含的 QSpinBox 和 QSlider 会自动 "重新定义" 父窗口,QWidget 会获得它们的全部权,那也是它们在开立即不曾安装父窗口的因由; #27 展现出全体窗体部件。

     1 #include <QApplication>    // #include <QtWidgets>
     2 #include <QHBoxLayout>     
     3 #include <QSpinBox>
     4 #include <QSlider>   
     5 
     6 int main(int argc, char *argv[])
     7 {
     8     QApplication app(argc, argv);
     9 
    10     QWidget window;
    11     window.setWindowTitle("Enter Your Age");
    12 
    13     QSpinBox *spin = new QSpinBox;
    14     QSlider *slider = new QSlider(Qt::Horizontal);
    15     spin->setRange(0,130);
    16     slider->setRange(0,130);
    17 
    18     QObject::connect(spin, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
    19     QObject::connect(slider, SIGNAL(valueChanged(int)), spin, SLOT(setValue(int)));
    20     spin->setValue(35);
    21 
    22     QHBoxLayout *layout = new QHBoxLayout;
    23     layout->addWidget(spin);
    24     layout->addWidget(slider);
    25 
    26     window.setLayout(layout);
    27     window.show();
    28 
    29     return app.exec();
    30 }
    

      Qt 中有八个布局管理器类,分别是水平布局管理器 (QHBoxLayout), 垂直布局处理器 (QVBoxLayout), 以及网格布局管理器 (QGridLayout)

      那些布局管理器,可认为加入个中的控件自动分配职责和尺寸大小,省却了手动布局画图的麻烦。

     

    参照他事他说加以考察资料:

      <C++ GUI Programming with Qt4>  2nd chapter 1

      <Qt 5.9 | All Qt Examples> Widgets Tutorial - Child Widgets

      <Qt 学习之路2>  豆子  

    本文由澳门新葡萄京最大平台发布于动作小游戏,转载请注明出处:入门例程

    关键词:

上一篇:没有了

下一篇:没有了