QWidget
类是所有控件、对话框、窗口类的父类, 并且QWidget类的父类的QObject
, 也就意味着所有的窗口类对象只要指定了父对象, 都可以实现==内存资源的自动回收==。

1.1设置父对象
1 2 3 4 5 6 7 8 9
| QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
void QWidget::setParent(QWidget *parent); void QWidget::setParent(QWidget *parent, Qt::WindowFlags f);
QWidget *QWidget::parentWidget() const;
|
1.2设置窗口位置
1 2 3 4 5 6 7 8 9 10 11 12
|
QRect QWidget::frameGeometry() const;
const QRect &geometry() const;
void setGeometry(int x, int y, int w, int h); void setGeometry(const QRect &);
void move(int x, int y); void move(const QPoint &);
|
使用实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| void MainWindow::on_positionBtn_clicked() { QRect rect = this->frameGeometry(); qDebug() << "左上角: " << rect.topLeft() << "右上角: " << rect.topRight() << "左下角: " << rect.bottomLeft() << "右下角: " << rect.bottomRight() << "宽度: " << rect.width() << "高度: " << rect.height(); }
void MainWindow::on_geometryBtn_clicked() { int x = 100 + rand() % 500; int y = 100 + rand() % 500; int width = this->width() + 10; int height = this->height() + 10; setGeometry(x, y, width, height); }
void MainWindow::on_moveBtn_clicked() { QRect rect = this->frameGeometry(); move(rect.topLeft() + QPoint(10, 20)); }
|
1.3设置窗口尺寸
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
QSize size() const
void resize(int w, int h); void resize(const QSize &);
QSize maximumSize() const;
QSize minimumSize() const;
void QWidget::setFixedSize(const QSize &s); void QWidget::setFixedSize(int w, int h);
void setMaximumSize(const QSize &); void setMaximumSize(int maxw, int maxh);
void setMinimumSize(const QSize &); void setMinimumSize(int minw, int minh);
int height() const;
int minimumHeight() const;
int maximumHeight() const;
void QWidget::setFixedHeight(int h);
void setMaximumHeight(int maxh);
void setMinimumHeight(int minh);
int width() const;
int minimumWidth() const;
int maximumWidth() const;
void QWidget::setFixedWidth(int w);
void setMaximumWidth(int maxw);
void setMinimumWidth(int minw);
|
1.4设置窗口标题和图标
1 2 3 4 5 6 7 8 9 10 11 12 13
|
QIcon windowIcon() const;
QIcon::QIcon(const QString &fileName);
void setWindowIcon(const QIcon &icon);
QString windowTitle() const;
void setWindowTitle(const QString &);
|
1.5信号
1 2 3 4 5 6 7
|
[signal] void QWidget::customContextMenuRequested(const QPoint &pos);
[signal] void QWidget::windowIconChanged(const QIcon &icon);
[signal] void QWidget::windowTitleChanged(const QString &title);
|
1.6槽
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
[slot] bool QWidget::close();
[slot] void QWidget::hide();
[slot] void QWidget::show();
[slot] void QWidget::showFullScreen();
[slot] void QWidget::showMaximized();
[slot] void QWidget::showMinimized();
[slot] void QWidget::showNormal();
bool QWidget::isEnabled() const;
[slot] void QWidget::setEnabled(bool);
[slot] void QWidget::setDisabled(bool disable);
[slot] virtual void QWidget::setVisible(bool visible);
|