Qt 切换QAction以设置QStackedWidget';s当前小部件
因此,我试图做的是,当我按下showMenu(QAction)时,容器(QStackedWidget)将当前小部件更改为menuWidget,当我再次按下它时,它将隐藏 好的,我已经设法得到了以下代码:Qt 切换QAction以设置QStackedWidget';s当前小部件,qt,qt5,Qt,Qt5,因此,我试图做的是,当我按下showMenu(QAction)时,容器(QStackedWidget)将当前小部件更改为menuWidget,当我再次按下它时,它将隐藏 好的,我已经设法得到了以下代码: connect(showMenu, SIGNAL(triggered()), map, SLOT(map())); map->setMapping(menuWidget, container); Object::connect(map, SIGNAL(mapped(QWidget *)),
connect(showMenu, SIGNAL(triggered()), map, SLOT(map()));
map->setMapping(menuWidget, container);
Object::connect(map, SIGNAL(mapped(QWidget *)), container, SLOT(setCurrentWidget(QWidget *)));
如果我运行:
container->setCurrentWidget(menuWidget);
直接来说,它工作得很好,所以我没有把事情搞砸。你应该在你的类中创建一个显示/隐藏
menuWidget
的窗口
如果您使用的是可检查的QAction
对象,则可以使用signal,并使用checked
变量来确定是否应显示或隐藏小部件
如果未使用可检查的QAction
对象,则应创建类型为bool
的类成员变量,并在插槽中切换:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
...
private:
bool toggleStatus; // set this to false in your constructor
...
};
您的
setMapping
调用看起来很奇怪。似乎您应该将showMenu
和menuWidget
传递给它:map->setMapping(showMenu,menuWidget)代码>@thuga成功了,非常感谢!你知道我如何在再次单击showMenu操作时简单地将其更改回来吗?我建议在你的类中设置一个插槽,如MyClass::menuToggled(bool checked)
。然后将信号连接到此插槽。然后在该插槽中检查checked
是否为真,并在此基础上隐藏/显示menuWidget
。connect(显示菜单,信号(切换(bool)),此插槽(菜单切换(bool))代码>void main window::menuToggled(bool选中){if(选中){container->setCurrentWidget(menuWidget);}}
现在它什么也不做:(@thugaOh,我错了。我以为您在对可检查的QAction
对象进行操作。您可以将其设置为可检查。或者,如果您不想有可检查的操作,请使用在menuToggled
插槽中切换的bool
成员变量(您可以从插槽中删除bool checked
参数)。
void MainWindow::menuToggled()
{
toggleStatus = !toggleStatus;
if(toggleStatus)
{
container->setCurrentWidget(menuWidget);
}
else
{
container->setCurrentWidget(mdiContainer);
}
}