在Qt中我们可以很容易的用C++做UI,还可以制作窗口,但是我们还需要自己为相应的窗口编写类和对象,例如我有一个很简单的需求,就是打开菜单栏然后弹出一个新窗口,在VC里可能比较麻烦,但是在Qt里面还是很容易的,我们只需要几个步骤就能够写一个新窗口,而UI可以直接使用CSS的思想方式去做设计。
首先我们可以用设计器设计一个窗体如下。我们可以新建一个名称为author的ui文件,这样我们就能够使用设计器设计窗体了。

我们设计完成后,就需要编写类来实现这个窗口的实例,首先我们是打开菜单栏来打开的,操作如下(MainWindow的设计我就不写了)。

当我们点击了Author的时候,会打开我们的作者窗体,我们可以在MainWindow下写上如下代码。
void MainWindow::OpenAuthorWindow()
{
AuthorWindow *authorWindow = new AuthorWindow();
authorWindow->show();
}
{
AuthorWindow *authorWindow = new AuthorWindow();
authorWindow->show();
}
上面的代码就是打开AuthorWindow,逻辑很简单,就不多说了。我们现在就写一个实例类的代码。
创建authorwindow.h头文件并编写如下代码,为何这样写我已经写在注释里了。
#ifndef AUTHORWINDOW_H
#define AUTHORWINDOW_H
//窗体继承自QDialog
#include <QDialog>
//使用在Ui类中的Dialog类
//具体可以看生成的ui_author.h
namespace Ui
{
class Dialog;
}
//写构造函数和析构函数
class AuthorWindow:public QDialog
{
public:
AuthorWindow(QWidget *parent=0);
~AuthorWindow();
private:
//私有的窗体对象
//我们在代码中会通过该对象操作窗体元素
Ui::Dialog *ui;
}; #endif // AUTHORWINDOW_H
#define AUTHORWINDOW_H
//窗体继承自QDialog
#include <QDialog>
//使用在Ui类中的Dialog类
//具体可以看生成的ui_author.h
namespace Ui
{
class Dialog;
}
//写构造函数和析构函数
class AuthorWindow:public QDialog
{
public:
AuthorWindow(QWidget *parent=0);
~AuthorWindow();
private:
//私有的窗体对象
//我们在代码中会通过该对象操作窗体元素
Ui::Dialog *ui;
}; #endif // AUTHORWINDOW_H
写完了头文件之后,我们就需要写实例的文件。实例类文件不是很难,但是要注意构造函数的写法。
#include "authorwindow.h"
#include "ui_author.h"
//构造函数
AuthorWindow::AuthorWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
//初始化UI
ui->setupUi(this);
}
{
delete ui;
}
#include "ui_author.h"
//构造函数
AuthorWindow::AuthorWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
//初始化UI
ui->setupUi(this);
}
AuthorWindow::
~AuthorWindow(){
delete ui;
}
上面的代码很简单,这样我们就给我们的窗体编写了一个实例的类,这里有几点是要注意的。
- 在编写头文件的时候,要写一个命名空间为UI的命名空间,其中的类名字要和设计器生成的代码的类名相同。
- 窗体的实例类需要一个内部的ui的私有变量,或者叫任何名字都行,但是需要一个操作内部的UI的对象。
- 2中的ui对象必须是1中的命名空间的Wrapper类的实例。
上面的这三点还需要自己去看代码,否则刚刚上手还是会比较难理解。