繁体   English   中英

Qt - 如何在两个QVBoxLayouts之间更改QPushButton

[英]Qt - how to make QPushButton change between two QVBoxLayouts

所以我有一个名为'vboxmain'的主要布局。 该计划有两种状态:二十一点和扑克。 对于我都有一个按钮。 在这个vboxmain中,我有一个上半部分,它覆盖了大部分程序,并且两个游戏都是相同的,但我也有一个底部应该为两个游戏显示不同的部分。 例如,扑克游戏应该拥有五个QCheckBox和一个按钮。 至于二十一点游戏我只需要两个按钮。 我创建了这两个底部布局作为QVBoxLayouts。 所以现在我有:

BlackjackiValikud = new QVBoxLayout; //for blackjack
Pokkerivalikud = new QVBoxLayout;  //for poker

我尝试创建两个按钮操作,如下所示:

void mainwindow::BlackJack_clicked(){
    vboxmain->removeItem(Pokkerivalikud);
    vboxmain->addItem(BlackjackiValikud);
}

void mainwindow::Poker_clicked(){
    vboxmain->removeItem(BlackjackiValikud);
    vboxmain->addItem(Pokkerivalikud);
}

按钮连接如下:

connect(BlackjackButton, SIGNAL(clicked()), this, SLOT(BlackJack_clicked()));
connect(PokerButton, SIGNAL(clicked()), this, SLOT(Poker_clicked()));

但目前它不起作用,我无法想办法做到这一点,所以我正在寻求帮助。 这可能不是最好的方法,但我不知道其他任何方式。 因此,我可以使用一些帮助来解决如何使用任何解决方案进行此工作 - 因此,使用两个按钮,我可以根据需要更改我的vboxmain的底部。

我愿意接受解决方案。

你的意思是什么不起作用?

您必须确保在添加布局时启用布局(通过QLayout::setEnabled ( bool enable) )或该窗口小部件是可见的(通过QWidget::show() )。 一般情况下,您必须制作可见的项目,这些项目会添加到已经可见的小部件中......

另一种方法是使用QStackedLayout来显示。 你有一个小部件poker为扑克视图和小部件blackjack为黑杰克视图。 按下按钮即可使用

void QStackedLayout::setCurrentIndex ( int index )
void QStackedLayout::setCurrentWidget ( QWidget * widget )

您可能希望保留布局并更改底部布局中显示的内容。 为此,请为从QWidget派生的每个游戏(比如blakjackWidget和pokerWidget)创建类。 并在底部布局中仅显示其中一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM