如何将 QWidgets 与菜单栏同步?

Posted

技术标签:

【中文标题】如何将 QWidgets 与菜单栏同步?【英文标题】:How to synchronize QWidgets with menu bar? 【发布时间】:2011-07-20 07:13:10 【问题描述】:

我是 Qt 创建者的新手。我有一个 3 页的堆叠小部件。我还有一个菜单栏,其中包含:open \\ create。 QWidget 包含 2 个页面。我想问一下如何将打开与第一页同步并从菜单栏创建与堆叠小部件的第二页?

我确实写过:ui->stackedWidget->show(); 但它正在打印第二页以打开和创建。

需要帮助。

【问题讨论】:

【参考方案1】:

您必须在 MainWindow 类中声明两个插槽。例如:

class MainWindow : public QMainWindow
  
  ...
public slots:
  void slotOpen() ;
  void slotCreate() ;
  ...
   ;

然后,在您的 MainWindow 构造函数中(假设您的菜单操作是 actionOpenactionCreate):

connect (ui -> actionOpen, SIGNAL(triggered()), SLOT(slotOpen())) ;
connect (ui -> actionCreate, SIGNAL(triggered()), SLOT(slotCreate())) ;

槽函数:

void MainWindow::slotOpen()
  
  ui -> stackedWidget -> setCurrentIndex(0) ;
  

void MainWindow::slotCreate()
  
  ui -> stackedWidget -> setCurrentIndex(1) ;
  

【讨论】:

【参考方案2】:

您可以将菜单操作连接到QStackedWidget 插槽setCurrentIndex。这将允许您在单击菜单时显示正确的小部件。

【讨论】:

那行不通。在 connect() 调用中,不能将 SLOT 分配为使用特定参数值调用。 -1。谢纳基奥斯所说的。它也必须是SIGNAL(triggered()),而不是SIGNAL(triggered)。哦,还有括号不匹配的问题。 我在没有任何 IDE 的情况下编写它来检查...我只会发出 setCurrentIndex 插槽存在的信号...所以我将删除示例

以上是关于如何将 QWidgets 与菜单栏同步?的主要内容,如果未能解决你的问题,请参考以下文章

5.1 Qmenu菜单栏

如何让导航栏下拉菜单与身体重叠?

MFC中如何在菜单栏中添加按钮

如何从菜单栏或控制中心在 Mac 上快速切换用户?

如何将片段目标绑定到底部导航栏中的菜单项?

带有固定菜单栏的响应式列