如何在Qt中动态添加标签?

时间:2014-08-04 20:49:47

标签: c++ qt qtabwidget

我想根据用户输入在Qt应用程序中动态添加标签。

  1. 默认情况下,一个标签始终存在。为方便起见,如果我可以在图形编辑器中创建此选项卡的布局和功能,那将会很棒。然后我想将这个布局转移到代码中,放入类构造函数并添加如下选项卡:

    ui->tabWidget->addTab(new myTabClass(), "Tab 2");

  2. 我也想以编程方式推广此标签。那可能吗?

2 个答案:

答案 0 :(得分:3)

要动态添加标签并由类构建,可以使用其他.ui文件。这样您就可以使用Qt Designer GUI完成所有布局工作。

1)在mainwindow.ui中创建一个空的tab小部件。 (例如,命名为myTabWidget)

2)将新的“Qt Design Form Class”添加到项目目录中作为QWidget类,而不是QTabWidget(例如名为MyTabPage):

右键点击项目 - >添加新内容 - > Qt - > Qt设计表格类

3)在mytabpage.ui中,您可以将设计插入myTabWidget中。

4)下一步,您可以在MainWindow构造函数或其他地方实例化MyTabPage,并将其添加到myTabWidget。之前可以删除myTabWidget中的空选项卡。要从myNewTab访问参数,您需要在MyTabPage中声明一个函数。

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    MyTabPage *myNewTab = new MyTabPage;
    ui-> myTabWidget ->removeTab(0);
    ui-> myTabWidget ->addTab(myNewTab, tr("name"))
    myNewTab->functionDeclaredInMyTabPage (); //access parameters of myNewTab
}
PS:我知道这个问题很老了。但我想为其他人提供一步一步的解决方案,因为我最近不得不为自己而奋斗。

答案 1 :(得分:1)

您可以按int QTabWidget::insertTab ( int index, QWidget * page, const QIcon & icon, const QString & label )插入标签,该标签会将带有给定标签,页面和图标的标签插入指定索引的标签小部件中:

ui->tabWidget->insertTab(1,new myTabClass(),QIcon(QString(":/SomeIcon.ico")),"TabText");

同时删除标签由QTabWidget::removeTab ( int index )完成。

相关问题