dialog嵌进widget qt_Qt中的QWidget 、QMainWindow以及QDialog

QWidget类是所有用户界面对象的基类。 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。每一个窗口部件都是矩形的,并且它们按Z轴顺序排列。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。

QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围 菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态条变得更容易,当用户点击菜单项或者工具条按钮时,槽会被调用。

QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。在Qt中,QMainWindow和不同的QDialog的子类是最普通的顶级窗口。一个没有父窗口部件的窗口部件一直是顶级窗口部件。非顶级窗口部件是子窗口部件。它们是它们的父窗口部件中的子窗口。你通常不能在视觉角度从它们的父窗口部件中辨别一个子窗口部件。在Qt中的绝大多数其它窗口部件仅仅作为子窗口部件才是有用的。(当然把一个按钮作为或者叫做顶级窗口部件也是可能的,但绝大多数人喜欢把他们的按钮放到其它按钮当中,比如QDialog。)

QDialog可以是模态对话框也可以是非模态对话框。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。QDialog也可以有一个QSizeGrip在它的右下角,使用setSizeGripEnabled().

如果是顶级对话框,那就基于QDialog创建,如果是主窗体,那就基于QMainWindow,如果不确定,或者有可能作为顶级窗体,或有可能嵌入到其他窗体中,则基于QWidget创建。

当然了,实际中,你还可以基于任何其他部件类来派生。看实际需求了,比如QFrame、QStackedWidget等等。

参考:

http://www.kuqin.com/qtdocument/qwidget.html#details

http://www.kuqin.com/qtdocument/qdialog.html

http://www.kuqin.com/qtdocument/qmainwindow.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Qt ,可以使用 QMenu 和 QAction 类来创建菜单。 首先,创建一个 QMenu 对象,并使用 addMenu() 方法将它添加到 QMainWindowQDialog 。然后,使用 addAction() 方法创建 QAction 对象,并将它添加到 QMenu 。 下面是一个简单的例子,在 QDialog 创建一个菜单: ```cpp #include <QDialog> #include <QMenu> #include <QMenuBar> class MyDialog : public QDialog { public: MyDialog(QWidget *parent = nullptr) : QDialog(parent) { // 创建菜单栏 QMenuBar *menuBar = new QMenuBar(this); setMenuBar(menuBar); // 创建菜单 QMenu *fileMenu = new QMenu("File", this); menuBar->addMenu(fileMenu); // 创建动作 QAction *newAction = new QAction("New", this); fileMenu->addAction(newAction); QAction *openAction = new QAction("Open", this); fileMenu->addAction(openAction); QAction *exitAction = new QAction("Exit", this); fileMenu->addAction(exitAction); // 连接动作的槽函数 connect(newAction, &QAction::triggered, this, &MyDialog::onNew); connect(openAction, &QAction::triggered, this, &MyDialog::onOpen); connect(exitAction, &QAction::triggered, this, &MyDialog::onExit); } private slots: void onNew() { // 处理 New 动作 } void onOpen() { // 处理 Open 动作 } void onExit() { // 处理 Exit 动作 close(); } }; ``` 在此例,我们创建了一个名为 "File" 的菜单,并添加了三个 QAction,分别是 "New"、"Open" 和 "Exit"。然后,我们将这些 QAction 连接到 MyDialog 的槽函数,以便处理它们的触发事件。 注意,我们使用了 connect() 方法来连接 QAction 的 triggered 信号和 MyDialog 的槽函数。当 QAction 被触发时,它会发出 triggered 信号,然后 MyDialog 会调用相应的槽函数来处理它。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值