这篇博客仅供自己积累学习,不过如果你也是同样在为学习Qt烦恼,也许这篇博客可能会提供一些帮助。文章也许有很多误解,之后会更新改正,这里只是方便我的理解来表示。
因为本人对游戏设计比较感兴趣再加上同时有要求使用OpenGL和Qt的需求,故开始对Qt的学习。IDE是Qt Creator,版本算是比较新的(Qt5.5),考虑到需求,故从Qt的基本开始,并没有直接上手OpenGL。以前学习过MFC,但是对Qt的了解很有限,所以有些东西要从来过。
Qt配置与安装这里就不做说明了,网上有太多相关的链接以供查询,这里只说我刚开始学习遇到的一些问题。一开始学习的当然很简单,就是创建一个主窗口,适应一些当中的硬件操作,最主要的就是学习其中的信号与槽函数,这里信号与槽的函数我主要都是通过在Qt5的设计模式下实现的,如果要使用编辑模式设计信号与槽我觉得可能会比较难以上手。
Qt5相比前几代的,头文件中Gui更改为了Widget,这个不影响,不过很多学习资料都太过老旧,初学时候会造成不少困惑。
首先建立一个基本工程,一路默认就行。这次实现的任务是弄一个多窗口出来。主要就是尝试2种方法,使用对话框调出主窗口,以及一个更加通用的反向过程。先说第一种
1.在main.cpp中添加已经新建的Dialog的头文件,接着在main函数中声明一个该类的变量,代码如下。
exec执行窗口时,必须操作当前窗口否则不能使用其他窗口(必须决策),要么进入主窗口要么退出。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
MyDlg hk;
if(hk.exec()==QDialog::Accepted)
{
w.show();
return a.exec();
}
return a.exec();
}
再来说第二种,这一种就比较简单了。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mydlg.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
close();
}
void MainWindow::on_pushButton_2_clicked()
{
MyDlg *x=new MyDlg(this);
x->show();
}
最后演示的结果(这里是2种方法的复合演示)
1.这里是一个对话框,Back退出(close()),Next进入主窗口
2.New One 会新建一个对话框,Quit退出程序
3.如下,若再次点击New One会新建更多对话框,Next只会返回主窗口。