Qt创建窗口选择的三个父类介绍 ----- QWidget、QMainWindow、QDialog

QWidget类

简介

QWidget是Qt中所有用户界面元素的基类。它提供了窗口的基本功能,并允许用户自定义窗口的外观和行为。QWidget可以包含其他QWidget子类的子窗口,从而实现复杂的用户界面。

特性

  • 提供了窗口的基本功能,包括绘制、事件处理、布局管理等。
  • 支持窗口的样式定制,可以通过样式表实现窗口的个性化外观。
  • 可以设置窗口的标题、图标、大小和位置等属性。
  • 支持窗口的布局管理,可以使用布局管理器来自动布局窗口中的子部件。
  • 支持窗口的事件处理,可以处理鼠标事件、键盘事件、定时器事件等。

主要接口

  • QWidget(QWidget *parent = nullptr):构造函数,用于创建QWidget对象。
  • void setWindowTitle(const QString &title):设置窗口的标题。
  • void setGeometry(int x, int y, int width, int height):设置窗口的位置和大小。
  • void resize(int width, int height):重新设置窗口的大小。
  • void move(int x, int y):移动窗口到指定位置。
  • void show():显示窗口。
  • void hide():隐藏窗口。
  • void close():关闭窗口。
  • void setLayout(QLayout *layout):设置窗口的布局管理器。
  • void setStyleSheet(const QString &styleSheet):设置窗口的样式表。

示例

#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // 创建一个QWidget对象作为主窗口
    QWidget mainWindow;

    // 创建一个垂直布局管理器
    QVBoxLayout layout(&mainWindow);

    // 创建一个按钮
    QPushButton button("Click me");

    // 将按钮添加到布局管理器中
    layout.addWidget(&button);

    // 设置主窗口的布局
    mainWindow.setLayout(&layout);

    // 设置窗口的标题
    mainWindow.setWindowTitle("Main Window");

    // 显示主窗口
    mainWindow.show();

    return app.exec();
}

总结

QWidget是Qt中所有用户界面元素的基类,提供了窗口的基本功能,并允许用户自定义窗口的外观和行为。通过QWidget,可以方便地创建和管理用户界面,实现丰富的交互体验。



QMainWindow类

简介

QMainWindow是Qt中用于创建应用程序主窗口的特殊窗口类。它提供了丰富的布局和功能,包括菜单栏、工具栏、状态栏等,用于创建应用程序的主界面。

特性

  • 提供了应用程序的主要框架,包括菜单栏、工具栏和状态栏等。
  • 可以设置中心窗口部件,并自由布局其他子部件。
  • 支持自定义窗口的外观和行为,可以设置窗口的标题、图标、大小和位置等属性。
  • 支持窗口的样式定制,可以通过样式表实现窗口的个性化外观。

主要接口

  • QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()):构造函数,用于创建QMainWindow对象。
  • void setCentralWidget(QWidget *widget):设置中心窗口部件。
  • void setMenuBar(QMenuBar *menuBar):设置菜单栏。
  • void addToolBar(QToolBar *toolbar):添加工具栏。
  • void setStatusBar(QStatusBar *statusBar):设置状态栏。
  • void setWindowTitle(const QString &title):设置窗口的标题。
  • void setWindowIcon(const QIcon &icon):设置窗口的图标。

示例

#include <QApplication>
#include <QMainWindow>
#include <QPushButton>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // 创建一个QMainWindow对象
    QMainWindow mainWindow;

    // 创建一个按钮
    QPushButton *button = new QPushButton("Click me", &mainWindow);

    // 将按钮添加到中心窗口部件
    mainWindow.setCentralWidget(button);

    // 设置窗口的标题
    mainWindow.setWindowTitle("Main Window");

    // 显示主窗口
    mainWindow.show();

    return app.exec();
}

总结

QMainWindow是Qt中用于创建应用程序主窗口的特殊窗口类,提供了丰富的布局和功能,用于创建应用程序的主界面。通过QMainWindow,可以方便地创建和管理主界面的各个部件,实现功能丰富的用户界面。



QDialog 类

简介

QDialog 是 Qt 中用于显示对话框的类,它提供了一种简单的方法来创建模态对话框和非模态对话框。对话框通常用于与用户进行交互,如显示消息、获取输入、进行设置等。

特性
  • 支持模态和非模态对话框。
  • 可以设置对话框的标题、图标、大小和位置等属性。
  • 提供了丰富的内置对话框类型,如消息框、文件对话框、颜色选择对话框等。
  • 允许用户自定义对话框的内容和行为。
主要接口
  • QDialog(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::Dialog):构造函数,用于创建一个对话框对象。
  • void setWindowTitle(const QString &title):设置对话框的标题。
  • void setModal(bool modal):设置对话框是否为模态对话框。
  • void setSizeGripEnabled(bool enabled):设置对话框是否显示大小调整手柄。
  • void accept():关闭对话框并发出 accept() 信号,通常表示用户接受对话框的内容。
  • void reject():关闭对话框并发出 reject() 信号,通常表示用户取消或拒绝对话框的内容。
示例
#include <QApplication>
#include <QDialog>
#include <QVBoxLayout>
#include <QPushButton>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // 创建一个对话框对象
    QDialog dialog;

    // 创建一个垂直布局管理器
    QVBoxLayout layout(&dialog);

    // 创建两个按钮
    QPushButton *okButton = new QPushButton("OK");
    QPushButton *cancelButton = new QPushButton("Cancel");

    // 将按钮添加到布局管理器中
    layout.addWidget(okButton);
    layout.addWidget(cancelButton);

    // 连接按钮的点击事件到对话框的 accept() 和 reject() 槽函数
    QObject::connect(okButton, &QPushButton::clicked, &dialog, &QDialog::accept);
    QObject::connect(cancelButton, &QPushButton::clicked, &dialog, &QDialog::reject);

    // 设置对话框的标题
    dialog.setWindowTitle("Dialog");

    // 显示对话框
    dialog.exec();

    return app.exec();
}
总结

QDialog 是 Qt 中用于显示对话框的类,它提供了方便的方法来创建和管理对话框,以及与用户进行交互。通过 QDialog,可以轻松地实现各种对话框,包括消息框、文件对话框、颜色选择对话框等,从而丰富了应用程序的功能和用户体验。


  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值