国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

QT動態(tài)生成控件與刪除動態(tài)控件

這篇具有很好參考價值的文章主要介紹了QT動態(tài)生成控件與刪除動態(tài)控件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、結(jié)果展示

二、刪除動態(tài)控件方法

三、工程代碼

1.工程文件

2.文件代碼


一、結(jié)果展示

如下圖所示,點擊左側(cè)按鈕時,刪除原有的3組控件,并生成6組控件;點擊右側(cè)按鈕時,刪除原有的6組控件,并生成3組控件。

qt 刪除控件,qt,ui,c++

圖1-1 動態(tài)生成和刪除控件

二、刪除動態(tài)控件方法

刪除動態(tài)控件之前,需要知道相關(guān)QWidget中的所有控件類型,使用QWidget的findChildren<控件類型*>()找出對應(yīng)類型的所有控件,并逐一刪除,例如下方代碼所示,為刪除widget中的所有QLabel控件,利用此方法可刪除widget中的所有控件。
    QList<QLabel*> listLabel = ui->widget->findChildren<QLabel*>();//找出所有l(wèi)abel控件
    foreach (QLabel *label, listLabel)
    {
        delete label;//刪除label控件
    }

三、工程代碼

1.工程文件

工程文件如下圖所示

qt 刪除控件,qt,ui,c++

?圖3-1 工程文件

2.文件代碼

界面文件deletedynamiccontrol.ui

qt 刪除控件,qt,ui,c++

圖3-2 界面布局

頭文件deletedynamiccontrol.h

#pragma execution_character_set("utf-8")
#ifndef DELETEDYNAMICCONTROL_H
#define DELETEDYNAMICCONTROL_H

#include <QWidget>
#include <QLabel>
#include <QCheckBox>
#include <QComboBox>
#include <QGridLayout>

QT_BEGIN_NAMESPACE
namespace Ui { class DeleteDynamicControl; }
QT_END_NAMESPACE

class DeleteDynamicControl : public QWidget
{
    Q_OBJECT

public:
    DeleteDynamicControl(QWidget *parent = nullptr);
    ~DeleteDynamicControl();

private slots:
    void on_pbGenerate1_clicked();

    void on_pbGenerate2_clicked();

private:
    Ui::DeleteDynamicControl *ui;

    struct ControlGroup
    {
        ControlGroup() {}
        QLabel *label;
        QCheckBox *check;
        QComboBox *combo;
    };

    QList<ControlGroup*> listControlGroup;
    void GenerateControl(const int &iNum);
};
#endif // DELETEDYNAMICCONTROL_H

源文件deletedynamiccontrol.cpp文章來源地址http://www.zghlxwxcb.cn/news/detail-524539.html

#include "deletedynamiccontrol.h"
#include "ui_deletedynamiccontrol.h"

DeleteDynamicControl::DeleteDynamicControl(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::DeleteDynamicControl)
{
    ui->setupUi(this);
    GenerateControl(8);//默認(rèn)生成8組控件
}

DeleteDynamicControl::~DeleteDynamicControl()
{
    delete ui;
}


void DeleteDynamicControl::on_pbGenerate1_clicked()
{
    GenerateControl(6);//點按鈕1,生成6組控件
}

void DeleteDynamicControl::on_pbGenerate2_clicked()
{
    GenerateControl(3);//點按鈕2,生成3組控件
}

void DeleteDynamicControl::GenerateControl(const int &iNum)
{
    //刪除已有的控件
    listControlGroup.clear();
    QList<QLabel*> listLabel = ui->widget->findChildren<QLabel*>();
    foreach (QLabel *label, listLabel)
    {
        delete label;
    }

    QList<QCheckBox*> listCheck = ui->widget->findChildren<QCheckBox*>();
    foreach (QCheckBox *check, listCheck)
    {
        delete check;
    }

    QList<QComboBox*> listCombo = ui->widget->findChildren<QComboBox*>();
    foreach (QComboBox *combo, listCombo)
    {
        delete combo;
    }

    QList<QGridLayout*> listLayout = ui->widget->findChildren<QGridLayout*>();
    foreach (QGridLayout *layout, listLayout)
    {
        delete layout;
    }

    //生成控件
    QGridLayout *layout=new QGridLayout;
    for(int i=0;i<iNum;i++)
    {
        ControlGroup *control=new ControlGroup;

        control->label=new QLabel;
        control->label->setText(tr("輸出") + QString::number(i));
        layout->addWidget(control->label,i,0,Qt::AlignHCenter);

        control->check=new QCheckBox;
        layout->addWidget(control->check,i,1,Qt::AlignHCenter);

        control->combo=new QComboBox;
        control->combo->addItems({tr("高電平"),tr("低電平")});
        layout->addWidget(control->combo,i,2,Qt::AlignHCenter);

        listControlGroup.append(control);
    }
    ui->widget->setLayout(layout);
}


到了這里,關(guān)于QT動態(tài)生成控件與刪除動態(tài)控件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Qt 6. 其他類調(diào)用Ui中的控件

    Qt 6. 其他類調(diào)用Ui中的控件

    1. 把主類指針this傳給其他類,tcpClientSocket = new TcpClient(this); 2. 把ui類改為公共類 3. 保存主類傳來的指針保存,通過該指針調(diào)用UI中的控件 4. 在pro文件中增加QT += network 5. 效果

    2024年02月13日
    瀏覽(23)
  • VS QT——ui不顯示新添加成員(控件)||代碼無提示

    VS QT——ui不顯示新添加成員(控件)||代碼無提示

    場景1:新建項目,在ui里編輯之后,新添加的控件不顯示代碼提示。 場景2:成員 ui? 報錯 不允許使用不完整的類型 ?因為是剛開始學(xué),花了兩三天才找到解決辦法。 網(wǎng)上方法:?重新編譯 ui文件 + 重新掃描解決方案 (但是我這里還是無法解決) 根本原因:缺少xxx.ui 的頭文

    2024年02月13日
    瀏覽(27)
  • 解決QT中UI控件布局更改后運行結(jié)果沒有發(fā)生變化的問題

    解決QT中UI控件布局更改后運行結(jié)果沒有發(fā)生變化的問題

    在學(xué)習(xí)QT中,遇到了一個問題,那就是當(dāng)我UI中更改了控件布局后,運行的結(jié)果卻并沒有發(fā)生改變,于是我上網(wǎng)查找了一些資料,大多略顯麻煩。 效果如下:這是UI控件更改布局后 ?這是運行后結(jié)果 顯然,UI文件中并沒有更新。 我的解決方案是: 1.首先在項目文件中找到UI文件

    2024年02月11日
    瀏覽(23)
  • QT界面調(diào)用ui,定義主MainWindow中的子控件的槽函數(shù)

    QT界面調(diào)用ui,定義主MainWindow中的子控件的槽函數(shù)

    在QT的應(yīng)用中,不可避免需要使用QtDesigner,創(chuàng)建的ui如何調(diào)用呢,這里給出我的調(diào)用方法。 ?所有設(shè)計做完后,保存ui文件,終端輸入: 得到ui.h文件,新建mainwindow.h文件,輸入: 新建mainwindow.cpp文件,輸入: 新建main.cpp文件,輸入: 編譯即可,編譯需要編寫pro文件。 除此之外,

    2024年02月12日
    瀏覽(15)
  • 【Visual Studio】Qt 在其他 cpp 文件中調(diào)用操作 ui 界面控件

    【Visual Studio】Qt 在其他 cpp 文件中調(diào)用操作 ui 界面控件

    知識不是單獨的,一定是成體系的。更多我的個人總結(jié)和相關(guān)經(jīng)驗可查閱這個專欄:Visual Studio。 還整了一個如何相互之間調(diào)用函數(shù)的文章,感興趣可以看:【Visual Studio】Qt 在其他 cpp 文件中調(diào)用主工程下文件中的函數(shù)。 主界面工程為 A ,添加的文件名字為 test ,目標(biāo)是在

    2024年02月05日
    瀏覽(24)
  • Qt項目UI文件中新添加的控件在代碼中不識別的問題

    ui-XXXX 在UI界面中新添加了控件,但是在代碼中怎么也不出現(xiàn),或者劃紅線 我看不少人說備份刪除文件再添加,或者關(guān)閉QT再打開。。。 其實只要右鍵項目清除構(gòu)建,然后重新構(gòu)建就可以了, 這有一個大哥寫的也很明白,感覺好的辦法被海一樣的信息淹沒了,也幫他給個鏈接

    2024年02月16日
    瀏覽(28)
  • QT中treeWidget組件動態(tài)添加節(jié)點,刪除節(jié)點,

    QT中treeWidget組件動態(tài)添加節(jié)點,刪除節(jié)點,

    QT中treeWidget組件動態(tài)添加節(jié)點,刪除節(jié)點, 2.1QT 5.14.1 新版QT6.4,,6.5在線安裝經(jīng)常失敗,而5.9版本又無法編譯64位程序,所以就采用5.14.1這個用的比較多也比較穩(wěn)定的一個版本。 QT編譯器采用的是MSVC2017 64bit。 鏈接:https://pan.baidu.com/s/1ER98DPAkTUPlIyCC6osNNQ?pwd=1234 2.3 Visual studio 20

    2024年02月05日
    瀏覽(20)
  • Qt、C++動態(tài)UI

    Qt、C++動態(tài)UI

    在項目實踐中,最簡單的更新應(yīng)用UI交互的方式就是更新整個安裝包。 隨著業(yè)務(wù)的發(fā)展,一個客戶端需要同時適配多種業(yè)務(wù),每種業(yè)務(wù)都有自己獨特的設(shè)置頁,業(yè)務(wù)之間又較為獨立。如果將這些UI頁面、業(yè)務(wù)代碼都在一份代碼上維護,加各種條件分支,維護會越來越困難:容

    2024年02月03日
    瀏覽(19)
  • QT子線程或自定義類操作訪問主界面UI控件的幾種方法

    QT子線程或自定義類操作訪問主界面UI控件的幾種方法

    ????????QT創(chuàng)建窗體工程,一般在MainWindow或Dialog類里可以直接通過ui指針訪問控件,但是添加新的類后又如何訪問呢,可以通過以下幾種方式: (1)例如有個自己定義的類CustomClass,在自定義類里包含主界面指針MainWindow * class MainWindow; ? class CustomClass { public: ? ? CustomCla

    2024年02月09日
    瀏覽(23)
  • 【[Qt]基于QChartView開發(fā)的圖表顯示控件,支持實時顯示,動態(tài)更新,支持鼠標(biāo)交互等操作】

    【[Qt]基于QChartView開發(fā)的圖表顯示控件,支持實時顯示,動態(tài)更新,支持鼠標(biāo)交互等操作】

    十字線和顯示坐標(biāo)實現(xiàn) 在.h文件中定義十字線lineitem變量和坐標(biāo)textitem變量 在Cpp文件中初始化 然后定義鼠標(biāo)事件,在鼠標(biāo)進入時顯示,移出時隱藏,移動時顯示。 其他實現(xiàn)請參考具體代碼 ChartDrawer.h文件 ChartDrawer.cpp 文件 具體使用代碼如下 1、初始化類對象,并加入界面布局

    2023年04月23日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包