Qt学习(一)简单界面

参考书籍《Qt creator 快速入门》《C++ GUI Qt4 编程》

1. 命令行创建(熟悉总体架构,及qmake编译的具体流程)

这边的例子,一个是通过纯命令行的形式创建一个带有spin box和slider加一个退出按钮的小界面。别看它小,也有信号与槽。

#include 
#include 
#include 
#include 
#include 


int main(int argc, char** argv)
{
    QApplication app(argc, argv);

    QWidget *window = new QWidget;

   QSpinBox* spinbox = new QSpinBox;
   spinbox->setRange(1,100);
   
   QSlider* slider = new QSlider(Qt::Horizontal);
   slider->setRange(1, 100);

    QPushButton* button = new QPushButton("quit", window);

    QObject::connect(spinbox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
    QObject::connect(slider, SIGNAL(valueChanged(int)), spinbox, SLOT(setValue(int)));
    
    QObject::connect(button, SIGNAL(clicked()), window, SLOT(close()));

    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(spinbox);
    layout->addWidget(slider);
    layout->addWidget(button);
    
    window->setLayout(layout);
    
    window->show();
  //    button->show();
    return app.exec();


}

程序运行截图如下:


Qt学习(一)简单界面_第1张图片


2. 用Qt Creator创建(简单,但是必须理解它帮我们省略了什么)

这里我新建了一个qt Gui工程,父类选择的是QDialog,主要的改动都在Dialog.cpp中,主要是构造函数中,程序如下:

#include "yakedialog.h"
#include "ui_yakedialog.h"

yakeDialog::yakeDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::yakeDialog)
{
    ui->setupUi(this);

    QObject::connect(ui->spinBox, SIGNAL(valueChanged(int)), ui->horizontalSlider, SLOT(setValue(int)));
    QObject::connect(ui->spinBox, SIGNAL(valueChanged(int)), ui->dial, SLOT(setValue(int)));

    QObject::connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), ui->spinBox, SLOT(setValue(int)));
    QObject::connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), ui->dial, SLOT(setValue(int)));

    QObject::connect(ui->dial, SIGNAL(valueChanged(int)), ui->spinBox, SLOT(setValue(int)));
    QObject::connect(ui->dial, SIGNAL(valueChanged(int)), ui->horizontalSlider, SLOT(setValue(int)));


    QObject::connect(ui->pushButton,SIGNAL(clicked()), this,SLOT(close()));

}

yakeDialog::~yakeDialog()
{
    delete ui;
}

Qt学习(一)简单界面_第2张图片


我们可以看到的是,部件都是通过ui来调用出来的,也就是我们在Qt Creator帮我们建立的那个ui文件中,我们加入spin box ,加入按钮,这些都是资源,我们为什么能够通过ui来调用呢?

1. ui资源都被编译成了头文件,也就是creator帮我自动加入的那个ui_yakedialog.h

2. ui指针是在dialog.h中定义的一个private 的成员变量(如下图所示),而我们的dialog.cpp包含了这个dialog.h。因此可以调用ui指针,这样,通过指针就可以调用其中的资源了。

Qt学习(一)简单界面_第3张图片


你可能感兴趣的:(Qt)