您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“C/C++ Qt TabWidget如何實(shí)現(xiàn)多窗體創(chuàng)建”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C/C++ Qt TabWidget如何實(shí)現(xiàn)多窗體創(chuàng)建”這篇文章吧。
在開發(fā)窗體應(yīng)用時(shí)通常會伴隨分頁,TabWidget組件配合自定義Dialog組件,可實(shí)現(xiàn)一個(gè)復(fù)雜的多窗體分頁結(jié)構(gòu),此類結(jié)構(gòu)也是ERP等軟件通用的窗體布局方案。
首先先來實(shí)現(xiàn)一個(gè)只有TabWidget分頁的簡單結(jié)構(gòu),如下窗體布局,布局中空白部分是一個(gè)TabWidget組件,下方是一個(gè)按鈕,當(dāng)用戶點(diǎn)擊按鈕時(shí),自動(dòng)將該窗體新增到TabWidget組件中。
該頁面關(guān)聯(lián)代碼如下所示,當(dāng)用戶點(diǎn)擊on_pushButton_clicked()時(shí)自動(dòng)新增一個(gè)窗體并將窗體的Tab設(shè)置為指定的IP地址。
t->setTabIcon(cur,QIcon(":/image/1.ico")); ui->tabWidget->setCurrentIndex(cur); ui->tabWidget->setVisible(true); } // 關(guān)閉Tab時(shí)執(zhí)行 void MainWindow::on_tabWidget_tabCloseRequested(int index) { if (index<0) return; QWidget* aForm=ui->tabWidget->widget(index); aForm->close(); } // 在無Tab頁面是默認(rèn)禁用 void MainWindow::on_tabWidget_currentChanged(int index) { Q_UNUSED(index); bool en=ui->tabWidget->count()>0; ui->tabWidget->setVisible(en); } 其中的每一個(gè)子窗體,都需要?jiǎng)討B(tài)獲取父窗體指針根據(jù)指針對自身進(jìn)行操作,子窗體代碼如下. #include "formdoc.h" #include "ui_formdoc.h" #include "mainwindow.h" #include <QVBoxLayout> #include <iostream> FormDoc::FormDoc(QWidget *parent) : QWidget(parent), ui(new Ui::FormDoc) { ui->setupUi(this); QVBoxLayout *Layout = new QVBoxLayout(); Layout->setContentsMargins(2,2,2,2); Layout->setSpacing(2); this->setLayout(Layout); MainWindow *parWind = (MainWindow*)parentWidget(); //獲取父窗口指針 QString ref = parWind->GetTableNumber(); // 獲取選中標(biāo)簽索引 std::cout << ref.toStdString().data() << std::endl; } FormDoc::~FormDoc() { delete ui; }
代碼運(yùn)行效果如下:
以上是“C/C++ Qt TabWidget如何實(shí)現(xiàn)多窗體創(chuàng)建”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。