创建窗口
如何创建一个你自己的窗口部件,描述如何控制一个窗口部件的最小大小和最大大小,并且介绍了窗口部件的名称。
创建项目时候,选QWidget并把Widget修改成MyWidget。打开mywidget.cpp,修改里面代码。
//mywidget.cpp
#include "mywidget.h"
#include "ui_mywidget.h"
#include <QPushButton>
#include <QFont>
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget)
{
ui->setupUi(this);
setMinimumSize(200, 120); //最小大小
setMaximumSize(200, 120); //最大大小
QPushButton *quit = new QPushButton("Quit", this); //创建窗口部件
quit->setGeometry(62, 40, 75, 30);
quit->setFont(QFont( "Times", 18, QFont::Bold));
connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
}
MyWidget::~MyWidget()
{
delete ui;
}
//main.cpp
#include "mywidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
w.setGeometry(100, 100, 200, 120);
w.show();
return a.exec();
}
MyWidget::MyWidget(QWidget *parent)
这里我们创建了一个新类。因为这个类继承了 QWidget,所以新类是一个窗口部件,并且可以最为一个顶层窗口或者子窗口部件。 这个类只有一个成员函数,构造函数(加上从 QWidget 继承来的成员函数)。这个构造函数是一个标准的 Qt 窗口部件构造函数,当你创建窗口部件时,你应该总是包含一个相似的构造函数。创建项目的时候会自动生成。
第一个参数是它的父窗口部件。为了生成一个顶层窗口,你指定一个空指针作为父窗口部件。就像你看到的那样,这个窗口部件默认地被认做是一个顶层窗口。
setMinimumSize(200, 120); setMaximumSize(200, 120);
因为这个窗口部件不知道如何处理重新定义大小,我们把它的最小大小和最大大小设置为相等的值,这样我们就确定了它的大小。
QPushButton *quit = new QPushButton(“Quit”, this);
这里我们创建并设置了这个窗口部件的一个名称为“quit”的子窗口部件(新窗
口部件的父窗口部件是 this)。
connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
因为 MyWidget 类不知道这个应用程序对象,它不得不连接到 Qt 的指针,qApp。 一个窗口部件就是一个软件组件并且它应该尽量少地知道关于它的环境,因为它应该尽可能的通用和可重用。
知道了应用程序的名称将会打破上述原则,所以在一个组件,比如 MyWidget,需要和应用程序对象对话的这种情况下,Qt 提供了一个别名,qApp。