溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C/C++?Qt?TabWidget如何實(shí)現(xiàn)多窗體創(chuàng)建

發(fā)布時(shí)間:2021-12-03 11:32:01 來源:億速云 閱讀:220 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“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組件中。

C/C++?Qt?TabWidget如何實(shí)現(xiàn)多窗體創(chuàng)建

該頁面關(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)建

以上是“C/C++ Qt TabWidget如何實(shí)現(xiàn)多窗體創(chuàng)建”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(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)容。

AI