簡體   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