所以我有一个名为'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的底部。
我愿意接受解决方案。
答案 0 :(得分:3)
你的意思是什么不起作用?
您必须确保在添加布局时(通过QLayout::setEnabled ( bool enable)
)启用布局,或者该窗口小部件可见(通过QWidget::show()
)。一般情况下,您必须制作可见的项目,这些项目会添加到已经可见的小部件中......
另一种方法是使用QStackedLayout来显示。您有扑克视图的小部件poker
和黑杰克视图的小部件blackjack
。按下按钮,您可以使用
void QStackedLayout::setCurrentIndex ( int index )
void QStackedLayout::setCurrentWidget ( QWidget * widget )
答案 1 :(得分:0)
您可能希望保留布局并更改底部布局中显示的内容。为此,请为从QWidget派生的每个游戏(比如blakjackWidget和pokerWidget)创建类。并在底部布局中只显示其中一个。