我想根据用户输入在Qt应用程序中动态添加标签。
默认情况下,一个标签始终存在。为方便起见,如果我可以在图形编辑器中创建此选项卡的布局和功能,那将会很棒。然后我想将这个布局转移到代码中,放入类构造函数并添加如下选项卡:
ui->tabWidget->addTab(new myTabClass(), "Tab 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 )
完成。