• 《C++ GUI Qt4编程》第一章、Qt入门



    1.1 Hello Qt

    创建hello目录,新建源文件hello.cpp:

    #include <QApplication>
    #include <QLabel>
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        QLabel *label = new QLabel("Hello Qt!");
        label->show();
        return app.exec();
    }

    进入hello目录,qmake -project生成一个与平台无关的项目文件hello.pro。

    TEMPLATE      = app
    SOURCES       = hello.cpp

    然后输入命令qmake hello.pro从项目文件生成一个与平台相关的makefile文件。

    键入make命令就可以构建该程序了。


    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();
    }

    将按钮的clicked()信号和QApplication对象的quit()槽连接。


    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();
    }
    

    关于这段代码需要注意两点:

    1.布局管理器会自动将该窗口设置为spin和slider的父对象。
    2.当滑动滑块时,QSlider的setValue槽会发射valueChanged信号,这样就触发了spin的
    setValue槽。最终回到QSlider的setValue时就不会再发射任何信号了,因为滑块的值
    已经是35了。具体过程如下图:



    一般步骤总结:

    1.声明所需的窗口部件。
    2.设置它们所应具备的属性。
    3.把它们添加到布局中,布局自动设置它们的位置和大小。
    4.利用信号和槽机理,连接各个窗口部件,管理用户的交互行为。


  • 相关阅读:
    HDU 6187 Destroy Walls
    HDU1596 find the safest road
    美国机遇号失联已久,NASA想出一奇招,网友看后:这我上我也行!
    萨拉飞机或掉入恐怖深渊,那里满是核废料
    Problem : 恢复一棵树
    Problem : [tju1071]一个简单题
    Problem : 马农
    人类首个“触日”探测器绕日第二圈
    美国三岁男孩森林迷路两天 遇黑熊“热心帮忙”终获救
    世上最孤独鸭子去世
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157838.html
Copyright © 2020-2023  润新知