QWidget
-
所有窗口类的基类
Qt 中有 3 个窗口的基类:QWidget、QMainWindow、QDialog
在创建 Qt 工程时,会让我们选择继承自哪一个窗口类
其中,QMainWindow、QDialog 都是继承自 QWidge -
所有控件类的基类
Qt 中的控件类(按钮、输入框、单选框等)也属于窗口类
它们的基类也是 QWidget; -
可以内嵌到其他窗口的内部,此时需要给其指定父窗口;
-
可以作为独立的窗口显示,此时不能给其指定父窗口;
新建并显示 QWidget 窗口
右键,添加新文件,选择【Qt】->【Qt 设计师界面类】
选择模板
前三个对应 QDialog,后面的两个分别对应 QMainWindow 和 QWidget
选择【Widget】,然后下一步
然后来到 widget.cpp 文件中,添加如下代码,来显示 SubWidget 窗口:
思考:这里定义的并不是临时变量,而是new的对象,所以能够一直正常显示!
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
#if 0
// 未指定父窗口,那么这个窗口就是独立的窗口
// 需要调用其show方法来显示
SubWidget* subWidget = new SubWidget();
subWidget->setWindowTitle("SubWidget");
subWidget->show();
#endif
#if 1
// 如果指定了父窗口,那么就不用调用其show方法了
// 因为:父窗口显示时,会将其子窗口一起显示出来。
SubWidget* subWidget = new SubWidget(this);
subWidget->setWindowTitle("SubWidget");
// myWidget->show();
#endif
}
常用的属性和方法
窗口位置
// 1、设置窗体的几何信息
// 获取相对于当前窗口父窗口的几何信息:宽高、坐标点信息
const QRect &geometry() const;
void setGeometry(int x, int y, int w, int h);
void setGeometry(const QRect &);
// 2、移动窗口。
// 重新设置窗口的位置
void move(int x, int y);
void move(const QPoint &);
窗口大小
通常,窗口可以拖动其右下角,进行放大和缩小。我们可以设置窗口的最小大小和最大大小;另外,窗口可以设置为固定大小,这样窗口就不能放大和缩小;
常用的设置大小的函数如下:
// 1、设置窗口尺寸
QSize size() const
void resize(int w, int h);
void resize(const QSize &);
// 2、设置最大尺寸
QSize maximumSize() const;
void setMaximumSize(const QSize &);
void setMaximumSize(int maxw, int maxh);
// 3、设置最小尺寸
QSize minimumSize() const;
void setMinimumSize(const QSize &);
void setMinimumSize(int minw, int minh);
// 4、设置固定尺寸
void QWidget::setFixedSize(const QSize &s);
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);
窗口标题、图标、资源文件
设置和获取窗口的标题,直接使用如下两个函数即可:
// 获取和设置窗口的标题
QString windowTitle() const;
void setWindowTitle(const QString &);
设置窗口的图标,需要一个 QIcon 对象,如下:
// 获取和设置窗口的图标
QIcon windowIcon() const;
void setWindowIcon(const QIcon &icon);
// 构造 QIcon 图标对象
// 有 6 个重载的构造方法,通常我们使用最后一个
// 参数为图标文件的路径
QIcon::QIcon(const QString &fileName);
首先将图标文件 clock.ico,复制到项目目录 QWidgetTest 下的 icon 目录中,在项目上右键,选择【添加新文件…】,选择【Qt Resource File】,这样就会在项目中,添加一个 .qrc 的文件,资源文件命名为 main.qrc,点击完成就会在项目中,添加一个 main.qrc 的资源文件,接下来打开 “资源文件编辑器”:
点击 “Add Prefix”,添加前缀:
再点击 “Add Files”,定位到拷贝到项目目录下的图标文件clock.ico:
void Widget::on_btnGetSize_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_btnSetSize_clicked()
{
this->resize(400, 400);
}
void Widget::on_btnSetFixedSize_clicked()
{
this->setFixedSize(500, 500);
}
void Widget::on_btnSetMinSize_clicked()
{
this->setMinimumSize(300, 300);
}
void Widget::on_btnSetMaxSize_clicked()
{
this->setMaximumSize(600, 600);
}
void Widget::on_btnMove_clicked()
{
this->move(100, 100);
}
void Widget::on_btnSetTitle_clicked()
{
this->setWindowTitle("演示QWidget");
}
void Widget::on_btnSetIcon_clicked()
{
this->setWindowIcon(QIcon(":/icon/clock.ico"));
}
标签:Widget,const,QT,int,void,QWidget,窗口
From: https://blog.csdn.net/m0_67194883/article/details/143173363