p;);
我们先看上面的那种方式,其中x和y是指以你桌面的左顶点为(0,0)来进行计算
比如说我们要将这个窗口位置设置在中心位置,窗口的宽度和高度分别为600和400,那么代码如下:
setGeomentry(1920 / 2, 1080 / 2, 600, 400);
运行代码后窗口出现的位置就在中心:
这里为什么是1920/2和1080/2,因为我的电脑桌面的分辨率就是为1920和1080。
也可以用实例化变量来调用设置:
widget.setGeomentry(1920 / 2, 1080 / 2, 600, 400);
如果使用第二种方式,需要先创建一个QRect
对象,然后把这个对象放在形参的位置即可:
QRect rect = QRect(1920/2, 1080/2, 600, 400);
this->setGeometry(rect);
1.3 显示窗口
这里使用的函数是
show();
我们在main.cpp中是见到过的,当时实例化Widget这个类后,用实例化对象中的show()
方法就显示出该窗口了。
widget.show();
1.4 隐藏窗口
使用的函数是:
hide();
这个是可以隐藏QWidget创建的窗口,使用的方法就是直接用实例化出来的实例化对象.hide()
widget.hide();
1.5 改变窗口大小
这里使用的方法是:
void resize(int w, int h)
填写的参数很简单,就是窗口改变后的宽和高。
比如说我没有使用setGeomentry()
更改窗口的位置,那我就可以使用这个函数对窗口进行更改大小:
resize(600, 400);
当然你也可以直接直接用实例化对象来调用这个方法:
widget.resize(600, 400);
1.6 设置窗口的位置
如果你想单独修改窗口的位置,并不想修改大小就可以使用这个函数
void move(int x, int y);
也有一个重载的
void move(const QPoint &);
其实都差不多
move(600, 400);
widget.move(600, 400);
QPoint point = QPoint(600, 400);
widget.move(point);
1.7 刷新窗口
使用的函数是:
void QWidget::update();
更新窗口的一些小部件
2.QDialog
QDialog一般用来实现对话框,对话框分为模块化对话框和非模块化对话框。
模块化对话框是在主窗口的顶层,如果不解决这个对话框,那么没办法和主窗口进行交互。
非模块化对话框和模块化相反,当激活对话框后不会阻塞主窗口,让你的主窗口也能和用户进行交互。
这个控件也有一些基本的方法,比如说:show()
、exec()
、move()
、resize()
、hide()
、setGeomentry()
、setGeomentry()
。
2.1 QDialog对话框
一般使用这个控件是来做一个对话框的,比如说我在上面刚才创建好的工程中添加一下用继承QDialog
的函数写一个弹出的对话框。
首先在Headers
文件夹右键选择Add New
然后再里面选择C++ Header File
然后点击下一步,再这取一个名字即可,这里叫Dialog.h
然后再右键Sources
文件夹,还是和上面一样的,只不过需要选择C++ Source File
。这里叫Dialog.cpp
然后在Dialog.h
中写上下面的代码:
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
//QT_BEGIN_NAMESPACE
//namespace Ui { class Widget; }
//QT_END_NAMESPACE
class Dialog:public QDialog{
public:
Dialog();
~Dialog();
};
#endif // DIALOG_H
在Dialog.cpp
中将析构函数和构造函数都实现一下,但是里面没有东西:
#include "Dialog.h"
Dialog::Dialog(){
}
Dialog::~Dialog(){
}
因为我懒得加,你也可以加一个改变标题的方法。
Dialog::Dialog(){
setWindowTitle("this is message");
}
然后在widget.cpp
中实例化一下对象,然后创建一个按钮并且连接一下:
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QPushButton* button1 = new QPushButton;
button1->setParent(this);
button1->setText("dian yi xia");
connect(button1, &QPushButton::clicked, [=](){
this->dialog.show();
});
}
这里看不懂没关系,先了解一下,后面会慢慢说一下的。
运行的结果就是在Widget的页面中有一个按钮,你点一下它就会跳出一个我们刚才创建的一个页面。
总结
Qt真的很简单,大家多查查资料就可以了。