Qt技术交流群:166830288??????欢迎一起进群讨论
点击获取Qt组件下载Qt?Widget 是桌面环境中典型的用户界面元素,这些小部件很好地集成到底层平台,在 Windows、Linux 和 macOS 上提供原生外观。 这些小部件成熟且具有丰富的用户界面元素,适用于大多数传统用户界面。 与?Qt?Quick 相比,这些小部件用于创建大型桌面应用程序,不太适合创建具有流畅界面的以触摸为中心的应用程序。
Main Window Classes概述
这些类提供了典型的现代主应用程序窗口所需的一切,例如主窗口本身、菜单和工具栏、状态栏等。
Main Window Classes
Qt 提供了以下类来管理主窗口和相关的用户界面组件:
示例代码
使用?QMainWindow?很简单,通常我们继承 QMainWindow 并在 QMainWindow 构造函数中设置菜单、工具栏和停靠窗口小部件。
要将菜单栏添加到主窗口,只需创建菜单,并将它们添加到主窗口的菜单栏。 请注意,QMainWindow::menuBar() 函数将在第一次调用时自动创建菜单栏,您还可以调用?QMainWindow::setMenuBar() 来在主窗口中使用自定义菜单栏。
class="prettyprint lang-cpp">MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { ... newAct = new QAction(tr("&New"), this); newAct->setShortcuts(QKeySequence::New); newAct->setStatusTip(tr("Create a new file")); connect(newAct, &QAction::triggered, this, &MainWindow::newFile); openAct = new QAction(tr("&Open..."), this); openAct->setShortcuts(QKeySequence::Open); openAct->setStatusTip(tr("Open an existing file")); connect(openAct, &QAction::triggered, this, &MainWindow::open); ...
一旦创建了动作,我们就可以将它们添加到主窗口组件中。 首先,我们将它们添加到弹出菜单中:
fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(newAct); fileMenu->addAction(openAct); ... fileMenu->addSeparator(); ...
QToolBar?和QMenu类使用 Qt 的动作系统来提供一致的 API。 在上面的代码中,使用?QMenu::addAction() 函数将一些现有操作添加到文件菜单中。 QToolBar 也提供了这个功能,可以很容易地在主窗口的不同部分重用动作,这避免了不必要的重复工作。
创建一个工具栏作为主窗口的子窗口,并向其中添加所需的操作:
fileToolBar = addToolBar(tr("File")); fileToolBar->addAction(newAct); fileToolBar->addAction(openAct); ... fileToolbar->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea); addToolBar(Qt::TopToolBarArea, fileToolbar);
在这个例子中,dock 小部件只能放置在左右停靠区域中,并且最初放置在左侧停靠区域中。
QMainWindow API 允许程序员自定义哪些停靠小部件区域占据停靠小部件区域的四个角。 如果需要,可以使用 QMainWindow::setCorner() 函数更改默认值:
setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea); setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea); setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
下图显示了上述代码生成的配置。 请注意,左右停靠小部件将占据此布局中主窗口的上角和下角。
一旦设置了所有主窗口组件,就可以使用类似于以下的代码创建和安装中央小部件:
QWidget *centralWidget = new QWidget(this); setCentralWidget(centralWidget);
Qt技术交流群:166830288??????欢迎一起进群讨论