QT如何实现mainwindow点击QMenu打开新页面而不是跳转新页面,且不要使用QAction
时间: 2024-02-09 18:13:00 浏览: 105
要实现mainwindow点击QMenu打开新页面而不是跳转新页面,可以使用QMenu的`aboutToShow()`信号和QMainWindow的`addDockWidget()`方法实现。具体步骤如下:
1. 在mainwindow中添加QMenu,并将其命名为menu1。
2. 针对menu1添加一个aboutToShow()信号的槽函数showNewPage(),在槽函数中创建一个新的QWidget对象newPage,将其添加到QMainWindow中。
```
void MainWindow::showNewPage()
{
QWidget *newPage = new QWidget();
QDockWidget *dockWidget = new QDockWidget("New Page", this);
dockWidget->setWidget(newPage);
addDockWidget(Qt::TopDockWidgetArea, dockWidget);
}
```
3. 在mainwindow的构造函数中连接menu1的aboutToShow()信号和showNewPage()槽函数。
```
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QMenu *menu1 = new QMenu("Menu1", this);
menuBar()->addMenu(menu1);
connect(menu1, SIGNAL(aboutToShow()), this, SLOT(showNewPage()));
}
```
这样,当点击menu1时,就会在QMainWindow中添加一个名为"New Page"的新页面。
阅读全文