目录
一、QWidget介绍
Qt
中有3
个窗口的基类:QWidget
、QMainWindow
、QDialog
在创建
Qt
工程时,会让我们选择继承自哪一个窗口类其中,
QMainWindow
、QDialog
都是继承自QWidget
Qt
中的控件类(按钮、输入框、单选框等)也属于窗口类它们的基类也是
QWidget
;
二、如何显示QWidget窗体
1、添加一个QWidget窗口类
首先,右键单击【QWidgetTest】,点击【添加新文件…】
选择【Qt】->【Qt 设计师界面类】
选择【Widget】,然后下一步
输入类名,然后点击下一步
点击完成之后,就可以将三个文件添加到项目中,并且自动在 .pro
项目文件中,添加了对应的行,如下:
2、显示新的QWidget窗口
为了便于显示,打开 sub.ui
设计师界面, 拖放一个按钮,如下:
然后来到 widget.cpp
文件中,添加如下代码,来显示 Sub
窗口:
三、常用的属性和方法
1、窗口位置
// 1、设置窗体的几何信息
// 获取相对于当前窗口父窗口的几何信息:宽高、坐标点信息
const QRect &geometry() const;
void setGeometry(int x, int y, int w, int h);
// 2、移动窗口。
// 重新设置窗口的位置
void move(int x, int y);
2、窗口大小
// 1、设置窗口尺寸
QSize size() const
void resize(int w, int h);
// 2、设置最大尺寸
QSize maximumSize() const;
void setMaximumSize(int maxw, int maxh);
// 3、设置最小尺寸
QSize minimumSize() const;
void setMinimumSize(int minw, int minh);
// 4、设置固定尺寸
void QWidget::setFixedSize(int w, int h);
// 5、单独设置窗口的高度
int height() const;
int minimumHeight() const;
int maximumHeight() const;
void setFixedHeight(int h);
void setMaximumHeight(int maxh);
void setMinimumHeight(int minh);
// 6、单独设置窗口的宽度
int width() const;
int minimumWidth() const;
int maximumWidth() const;
void setFixedWidth(int w);
void setMaximumWidth(int maxw);
void setMinimumWidth(int minw);
3、窗口的标题和图标
// 获取和设置窗口的标题
QString windowTitle() const;
void setWindowTitle(const QString &);
// 获取和设置窗口的图标
QIcon windowIcon() const;
void setWindowIcon(const QIcon &icon);
首先将图标文件 ping.ico
,复制到项目目录下的 icon
目录中,如下:
在项目上右键,选择【添加新文件…】
选择【Qt Resource File】,这样就会在项目中,添加一个 .qrc
的文件
然后,点击 “Add Prefix
”,添加前缀:
接下来就可以拷贝这个 clock.ico
的资源路径,在程序中使用了
四、案例
ui界面
核心代码
#include "widget.h"
#include "ui_widget.h"
#include "sub.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// sub* subwidget = new sub();
// subwidget->setWindowTitle("sub");
// subwidget->show();
// sub* subwidget = new sub(this);
// subwidget->setWindowTitle("sub");
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_btn_weizhi_clicked()
{
qDebug() <<"-----------------------------";
QRect rect = this->geometry();
qDebug() << "左上角: " << rect.topLeft();
qDebug() << "右上角: " << rect.topRight();
qDebug() << "左下角: " << rect.bottomLeft();
qDebug() << "右下角: " << rect.bottomRight();
qDebug() << "宽度: " << rect.width();
qDebug() << "高度: " << rect.height();
}
void Widget::on_btn_resize_clicked()
{
this->resize(400,400);
}
void Widget::on_btn_guding_clicked()
{
this->setFixedSize(500,500);
}
void Widget::on_btn_min_clicked()
{
this->setMinimumSize(300,300);
}
void Widget::on_btn_max_clicked()
{
this->setMaximumSize(600,600);
}
void Widget::on_btn_move_clicked()
{
this->move(100,100);
}
void Widget::on_btn_biaoti_clicked()
{
this->setWindowTitle("hahaha");
}
void Widget::on_btn_tubiao_clicked()
{
this->setWindowIcon(QIcon(":/icon/ping.ico"));
}