2012-08-29 66 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”);但是当我点击我连接的按钮时,我的程序就卡住了,停止响应。我做错了什么?谢谢。 –