2012-08-29 65 views
0

我正在Qt中製作一個GUI程序。使用Qt中的按鈕打開可關閉的標籤

我有一個選項卡,並在該選項卡中有按鈕,我想要的是當該按鈕被點擊時,它應該打開一個選項卡在同一個小部件,它應該是可關閉的。 我該怎麼做?示例代碼將會很好。

謝謝

+1

我的理解是,在一個父窗口小部件中有兩個選項卡:tabA和tabB;當你點擊tabA中的一個按鈕時,tabB應該是opend。這可以做到。 但是,你是什麼意思「可關閉」? –

+0

我的意思是 假設我的程序啓動了,那麼它應該只有一個標籤,即tabA可見,當點擊按鈕時,它應該打開標籤B,它應該在該標籤上有關閉按鈕,就像在Google Chrome標籤中一樣。 –

回答

2

我不完全理解的問題,但這裏是在回答我最好的嘗試。我想你使用QTabWidget作爲你的標籤。您可以通過下面的代碼添加窗口小部件,並選擇它:

QWidget* widget; 
int index = ui->tabWidget->addTab(widget, "Description"); 
ui->tabWidget->setCurrentIndex(index); 

你不能讓一個標籤關閉的,但你可以攔截關閉事件:

ui->tabWidget->setTabsClosable(true); 
connect(ui->tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int))); 

和處理不需要的關閉事件是這樣的:

void MainWindow::closeTab(int index) 
{ 
    if (index == 0) 
    { 
     return; // don't close the first tab 
    } 
    QWidget* widget = ui->tabWidget->widget(index); 
    ui->tabWidget->removeTab(index); 
    delete widget; 
} 

編輯

你可以插入標籤:

ui->tabWidget->insertTab(index, widget, "Description"); 

這裏是documentationQTabWidget類。

+0

感謝您的回答。 你能告訴我如何隱藏單個標籤並顯示它們嗎?對於隱藏標籤我用ui-> tabWidget-> removeTab(3),這是成功的,但我不知道如何顯示它。你能告訴我嗎? –

+1

我已經更新了我的答案。 HTH – bjoernz

+0

感謝您的回覆。我嘗試了這樣ui-> tabWidget-> insertTab(3,ui-> tabWidget,「My Tab」);但是當我點擊我連接的按鈕時,我的程序就卡住了,停止響應。我做錯了什麼?謝謝。 –