QT入门基础认知(三个常用类、三种对话框类型、信号和槽)

1.简单介绍:
1.1 三个常用类(Qwidget类、QDialog类、QMainwindow类)
Qwidget类:继承与QObject类和QPaintdevice类,所有用户界面对象的基类,常用于嵌入到其他窗体的界面;
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第1张图片
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第2张图片
QDialog类:继承与QWeidget类,对话框窗口的基类,用于创建顶级对话框;
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第3张图片
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第4张图片
QMainwindow类:继承与QWeidget类,菜单、工具、状态条的主应用程序窗口。
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第5张图片
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第6张图片
1.2三种对话框类型:
模式对话框:窗口创建后,主窗口的其他内容都不能执行,只有等退出该窗口后才能执行。其中用exec()函数来阻塞。举个简单例子(在主窗口框架下插入如下代码):

QApplication a(argc, argv);
    MainWindow w;
    w.setWindowTitle("原始主界面");
    w.show();
    //基于主窗体新建一个对话框
    QDialog *dlg=new QDialog(&w);
    dlg->setWindowTitle("我是模式对话框,不许动,你要等着我");
    dlg->exec();//阻塞
    w.setWindowTitle("我可以变了,终于等到你");
    return a.exec();

运行结果:新建的对话框不关闭,主窗体不可以点击和运行:
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第7张图片
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第8张图片
非模式对话框:窗口创建后,主窗口等其他内容不受影响,可继续执行,一般调用show()函数显示。举个简单例子(在主窗口框架下插入如下代码):

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.setWindowTitle("原始主界面");
    w.show();
    //基于主窗体新建一个对话框
    QDialog *dlg=new QDialog(&w);
    dlg->setWindowTitle("我是非模式对话框,你不用等我了");
    dlg->show();
    //此时重新设置主界面标题可继续执行
    w.setWindowTitle("我变了,不等你了");
    return a.exec();
}

运行结果:新建的对话框不关闭,主窗体照样可以点击和运行
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第9张图片
半模式对话框:主对话框无法点击但后台程序可继续运行,常调用setModal(true),和setWindowModality()。举个简单例子(在主窗口框架下插入如下代码):
运行结果:新建的对话框不关闭,主窗体照样不可以点击但其他程序可以继续运行
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第10张图片
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第11张图片
1.3 信号和槽:其实这里的信号和槽相当于MFC中的消息和消息处理函数。二者之间的关联方式有三种:
connect关联:首先定义槽函数,然后连接connect(,,,)(具体参数可参见代码)实现连接。代码实现:
首先设置三个buttun按钮和三个label控件:QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第12张图片
//类内定义槽函数:

private slots:
    void setconnect();

右键转到定义:

void Widget::setconnect()
{
    ui->label->setText("联系到我了");
}

构造函数中调用connect函数:

connect(ui->connectbutton,SIGNAL(clicked(bool)),this,SLOT(setconnect()));

QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第13张图片
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第14张图片
设计模式中的关联:F4,左键单击发送信号的部件并拖到指定位置实现自动关联
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第15张图片
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第16张图片
自动关联:右键,转到槽
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第17张图片
在这里插入图片描述
QT入门基础认知(三个常用类、三种对话框类型、信号和槽)_第18张图片
后两种方法简单方便,但代码可读性较差,代码量较大时不建议使用。
(参考自李浩林老师的课程讲解 https://edu.51cto.com/lecturer/12895564.html)

你可能感兴趣的:(QT)