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

Qt重寫QComboBox實(shí)現(xiàn)下拉展示多列數(shù)據(jù)

 更新時間:2024年11月30日 11:35:17   作者:Lydro  
這篇文章主要為大家詳細(xì)介紹了Qt如何重寫QComboBox實(shí)現(xiàn)下拉展示多列數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

需求

點(diǎn)擊QComboBox時,下拉列表以多行多列的表格展示出來。

實(shí)現(xiàn)

直接上代碼:

#include <QComboBox>
#include <QTableWidget>
#include <QVBoxLayout>
#include <QWidget>
#include <QEvent>
#include <QMouseEvent>
#include <QLineEdit>
class ComboBoxWithTableWidget : public QComboBox {
    Q_OBJECT
 
public:
    ComboBoxWithTableWidget(QWidget *parent = nullptr) : QComboBox(parent) {
        // 隱藏默認(rèn)的下拉箭頭
        setEditable(true);
        lineEdit()->setReadOnly(true);
 
        // 創(chuàng)建一個隱藏的容器來存放我們的表格
        popupWidget = new QWidget(this);
        popupWidget->setWindowFlags(Qt::Popup | Qt::FramelessWindowHint);
 
        QVBoxLayout *layout = new QVBoxLayout(popupWidget);
        layout->setContentsMargins(0, 0, 0, 0);
        layout->setSpacing(0);
 
        tableWidget = new QTableWidget(5, 2, popupWidget); // 5行2列
        for (int row = 0; row < 5; ++row)
        {
            for (int col = 0; col < 2; ++col)
            {
                QTableWidgetItem *item = new QTableWidgetItem(QString("Item %1%2").arg(row).arg(col));
                tableWidget->setItem(row, col, item);
            }
        }
        tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
        tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
        layout->addWidget(tableWidget);
        popupWidget->resize(220,200);
 
        connect(tableWidget, &QTableWidget::cellClicked, this, &ComboBoxWithTableWidget::onCellClicked);
 
        popupWidget->hide();
    }
 
protected:
 
    void showPopup() override
    {
        if (popupWidget->isHidden())
        {
            QComboBox::showPopup();
 
            //popupWidget->resize(this->width(), tableWidget->height() + 2); //(可能需要調(diào)整)
            popupWidget->move(this->mapToGlobal(QPoint(0, this->height())));
            popupWidget->show();
 
            tableWidget->setFocus();
        }
    }
 
    void hidePopup() override
    {
        if (popupWidget->isVisible())
        {
            popupWidget->hide();
            QComboBox::hidePopup();
        }
    }
 
private slots:
    void onCellClicked(int row, int column)
    {
        QString text = tableWidget->item(row, column)->text();
        this->setCurrentText(text);
        hidePopup(); // 選擇后隱藏下拉列表
    }
 
private:
    QWidget *popupWidget = nullptr;
    QTableWidget *tableWidget= nullptr;
};

示例效果

到此這篇關(guān)于Qt重寫QComboBox實(shí)現(xiàn)下拉展示多列數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Qt QComboBox下拉展示多列數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c語言動態(tài)內(nèi)存分配知識點(diǎn)及實(shí)例

    c語言動態(tài)內(nèi)存分配知識點(diǎn)及實(shí)例

    在本篇文章里小編給大家整理的是關(guān)于c語言動態(tài)內(nèi)存分配知識點(diǎn)及實(shí)例,需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • C++ 單例模式兩種實(shí)現(xiàn)方式

    C++ 單例模式兩種實(shí)現(xiàn)方式

    文章介紹了單例模式的兩種實(shí)現(xiàn)方式:餓漢模式和飽漢模式(懶漢模式),并對比了它們的特性、線程安全、資源占用、啟動速度、實(shí)現(xiàn)復(fù)雜度和性能開銷,文章還提供了代碼示例和適用場景建議,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • C++中const char*、char const*、char * const三者的區(qū)別

    C++中const char*、char const*、char * const三者的區(qū)別

    這篇文章主要介紹了C++中const char*、char const*、char * const三者的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++設(shè)計(jì)模式之解釋器模式

    C++設(shè)計(jì)模式之解釋器模式

    這篇文章主要介紹了C++設(shè)計(jì)模式之解釋器模式,本文講解了什么是解釋器模式、文法規(guī)則和抽象語法樹、解釋器模式的使用場合等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • C++?Opencv實(shí)現(xiàn)錄制九宮格視頻

    C++?Opencv實(shí)現(xiàn)錄制九宮格視頻

    這篇文章主要為大家介紹了如何利用C++和OpenCV庫實(shí)現(xiàn)錄制九宮格視頻,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)OpenCV有一定幫助,感興趣的可以了解一下
    2022-05-05
  • 五個經(jīng)典鏈表OJ題帶你進(jìn)階C++鏈表篇

    五個經(jīng)典鏈表OJ題帶你進(jìn)階C++鏈表篇

    做題之前呢,小編想提醒下大家,要三思而后行,不要一上來就嘎嘎敲代碼,要先學(xué)會自己畫圖分析,把自己的思路捋清楚,不要到時候?qū)懘a五分鐘,調(diào)試兩小時,記住,編程思路很重要
    2022-03-03
  • C語言的結(jié)構(gòu)體你了解嗎

    C語言的結(jié)構(gòu)體你了解嗎

    這篇文章主要為大家詳細(xì)介紹了C語言的結(jié)構(gòu)體,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 內(nèi)核線程優(yōu)先級設(shè)置的方法介紹

    內(nèi)核線程優(yōu)先級設(shè)置的方法介紹

    本篇文章介紹了,內(nèi)核線程優(yōu)先級設(shè)置的方法。需要的朋友參考下
    2013-05-05
  • MoveWindow() SetWindowPos()的區(qū)別于聯(lián)系

    MoveWindow() SetWindowPos()的區(qū)別于聯(lián)系

    這篇文章主要介紹了VC++中MoveWindow() SetWindowPos()的區(qū)別于聯(lián)系,需要的朋友可以參考下
    2015-01-01
  • C++實(shí)現(xiàn)LeetCode(7.翻轉(zhuǎn)整數(shù))

    C++實(shí)現(xiàn)LeetCode(7.翻轉(zhuǎn)整數(shù))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(7.翻轉(zhuǎn)整數(shù)),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評論

葫芦岛市| 鄱阳县| 镇巴县| 新巴尔虎左旗| 浠水县| 上虞市| 永新县| 长顺县| 宜都市| 健康| 瑞安市| 贵德县| 湖口县| 二手房| 南投县| 亚东县| 图片| 莫力| 广西| 门源| 海口市| 东乌珠穆沁旗| 枣庄市| 安宁市| 桦甸市| 农安县| 桂东县| 张家界市| 临洮县| 辽中县| 北川| 札达县| 万荣县| 池州市| 桦甸市| 营口市| 霍山县| 吉林省| 尼木县| 洪泽县| 时尚|