Qt学习(一)简单界面

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

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

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

#include <QApplication>
#include <QSlider>
#include <QSpinBox>
#include <QHBoxLayout>
#include <QPushButton>


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


}

程序运行截图如下:



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



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

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

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yaked19

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值