最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt使用QListWidget實現(xiàn)自定義Item

 更新時間:2023年10月22日 13:59:48   作者:FreeLikeTheWind.  
這篇文章主要為大家詳細介紹了Qt如何使用QListWidget實現(xiàn)自定義Item的效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

主界面UI

操作流程:

主窗口中央控件是QListWidget,點擊添加按鈕,會隨機向主窗口中央控件中添加自定義item;

選中某條前的可選框,如果選中,點擊右側的刪除圖標,會彈出提示是否刪除;如果不選中,右側刪除圖標無法點擊;

點擊是,刪除當前item,點擊否,不刪除。

實現(xiàn)需解決問題

1:如何在QListWidget中添加帶有按鈕、文本等其它控件的項?

2:選中某項后如何響應?QListWidget自帶的item響應為什么不生效?

3:如何選中刪除按鈕后,通知QListWidget做出刪除當前item的操作?

示例

首先是主窗口代碼

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
   Q_OBJECT

public:
   explicit MainWindow(QWidget *parent = nullptr);
   ~MainWindow();

private slots:
   // 添加項
   void on_btn_add_clicked();

private:
   Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QDebug>
#include <custemitem.h>

#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
}

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


void MainWindow::on_btn_add_clicked()
{
   QListWidgetItem* pItem = new QListWidgetItem("");
   ui->listWidget->addItem(pItem);

   custemItem* pCustomItem = new custemItem(pItem);
   ui->listWidget->setItemWidget(pItem, pCustomItem);
   ui->listWidget->setCurrentItem(pItem);

   connect(pCustomItem, &custemItem::emit_del, this, [&](QListWidgetItem* pItem){
       QMessageBox::StandardButton btn = QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("是否刪除?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
       if(QMessageBox::No == btn)
           return;
       ui->listWidget->removeItemWidget(pItem);
       delete pItem;
       pItem = nullptr;
   });
}

其次是自定義QWidget控件代碼

customitem.h

#ifndef CUSTEMITEM_H
#define CUSTEMITEM_H

#include <QWidget>
#include <QListWidgetItem>

namespace Ui {
class custemItem;
}

class custemItem : public QWidget
{
    Q_OBJECT

public:
    explicit custemItem(QListWidgetItem* pItem, QWidget *parent = nullptr);
    ~custemItem();

signals:
    void emit_del(QListWidgetItem* pItem);

private slots:
    void on_pushButton_clicked();

private:
    Ui::custemItem *ui;
    QListWidgetItem* m_pItem;
};

#endif // CUSTEMITEM_H

customitem.cpp

#include "custemitem.h"
#include "ui_custemitem.h"
#include "defind.h"

custemItem::custemItem(QListWidgetItem* pItem, QWidget *parent) :
    QWidget(parent),
    ui(new Ui::custemItem),
    m_pItem(pItem)
{
    ui->setupUi(this);
    ui->pushButton->setEnabled(false);

    int nRand = qrand()%4;
    ui->checkBox->setText(slText.at(nRand));
    ui->checkBox->setIcon(QIcon(slIcon.at(nRand)));


    connect(ui->checkBox, &QCheckBox::clicked, this, [=](){
       ui->pushButton->setEnabled(ui->checkBox->isChecked());
    });
}

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

void custemItem::on_pushButton_clicked()
{
    if(ui->checkBox->isChecked())
    {
        emit emit_del(m_pItem);
    }else{

    }
}

增加一個隨機顯示圖標和文本的類

defind.h

#ifndef DEFIND_H
#define DEFIND_H


#include <QStringList>
#include <QList>
#include <QIcon>

QStringList slText = {"12312312.mp3", "dfdafds.mp4", "zcvzcvzxv.txt", "asdfasdfafsafdf.avi"};
QList<QString> slIcon = {":/res/mp3.png", ":/res/mp4.png", ":/res/TXT.png", ":/res/Video.png"};


#endif // DEFIND_H

最后是main代碼

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

到此這篇關于Qt使用QListWidget實現(xiàn)自定義Item的文章就介紹到這了,更多相關Qt QListWidget自定義Item內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++利用GPAC實現(xiàn)生成MP4文件的示例代碼

    C++利用GPAC實現(xiàn)生成MP4文件的示例代碼

    GPAC主要針對學生和內容創(chuàng)作者,代表了一個跨平臺的多媒體框架,開發(fā)人員可以使用它在?LGPL?許可下制作開源媒體。本文就來用GPAC實現(xiàn)生成MP4文件,感興趣的可以了解一下
    2023-02-02
  • 深入分析C++中聲明與定義的區(qū)別

    深入分析C++中聲明與定義的區(qū)別

    C++學了這么多年你知道為什么定義類時,類的定義放在.h文件中,而類的實現(xiàn)放在cpp文件中。它們?yōu)槭裁茨軌蜿P聯(lián)到一起呢?你知道什么東西可以放在.h文件中,什么不能。什么東西又可以放在cpp文件中。如果你忘記了或是壓根就不明白,那么讀過此文你會清晰無比??!
    2014-09-09
  • Matlab實現(xiàn)讀寫txt文件數據與進制轉換

    Matlab實現(xiàn)讀寫txt文件數據與進制轉換

    這篇文章主要為大家詳細介紹了Matlab實現(xiàn)讀寫txt文件數據與進制轉換的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • C/C++中文件的隨機讀寫詳解及其作用介紹

    C/C++中文件的隨機讀寫詳解及其作用介紹

    這篇文章主要介紹了C/C++中文件的隨機讀寫詳解及其作用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • C++代碼實現(xiàn)網絡Ping功能

    C++代碼實現(xiàn)網絡Ping功能

    這篇文章主要介紹了C++代碼實現(xiàn)網絡Ping功能,Ping命令被送到本地計算機的IP軟件,該命令永不退出該計算機,本文給大家介紹的非常詳細,需要的朋友參考下吧
    2021-08-08
  • C++ 智能指針深入解析

    C++ 智能指針深入解析

    以下是對C++中智能指針的使用進行了詳細的分析介紹,需要的朋友可以參考下
    2013-07-07
  • C++實現(xiàn)單鏈表刪除倒數第k個節(jié)點的方法

    C++實現(xiàn)單鏈表刪除倒數第k個節(jié)點的方法

    這篇文章主要介紹了C++實現(xiàn)單鏈表刪除倒數第k個節(jié)點的方法,結合實例形式分析了C++單鏈表的定義、遍歷及刪除相關操作技巧,需要的朋友可以參考下
    2017-05-05
  • VC使用編譯時間作為版本號標識的方法

    VC使用編譯時間作為版本號標識的方法

    這篇文章主要介紹了VC使用編譯時間作為版本號標識的方法,需要的朋友可以參考下
    2017-03-03
  • C語言每日練習之統(tǒng)計文本單詞數及高頻詞

    C語言每日練習之統(tǒng)計文本單詞數及高頻詞

    本文文大家準備了個C語言練習題:統(tǒng)計單詞數并找出頻率最高的單詞,文中的示例代碼講解詳細,對我們學習C語言有一定幫助,感興趣的可以了解一下
    2022-05-05
  • C++17結構化綁定的實現(xiàn)

    C++17結構化綁定的實現(xiàn)

    這篇文章主要介紹了C++17結構化綁定的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05

最新評論

个旧市| 钦州市| 天镇县| 晋宁县| 扶风县| 大厂| 东乡族自治县| 福贡县| 邵东县| 马鞍山市| 武城县| 泰兴市| 延寿县| 榆社县| 天峻县| 靖西县| 九龙城区| 苍山县| 香港 | 金华市| 寿宁县| 霍城县| 曲阜市| 合阳县| 松桃| 称多县| 阿拉尔市| 沛县| 临清市| 天门市| 修文县| 中宁县| 临汾市| 昆山市| 阳曲县| 滦南县| 衡水市| 富阳市| 堆龙德庆县| 枣阳市| 荥经县|