• 【QT】Qt项目demo:数据在ui界面上显示,鼠标双击可弹窗显示具体信息


    一、项目总览

    在这里插入图片描述

    二、运行结果

    在这里插入图片描述
    I、鼠标单击
    在这里插入图片描述
    II、鼠标双击
    在这里插入图片描述

    三、源文件代码

    1、RecData.pro

    #-------------------------------------------------
    #
    # Project created by QtCreator 2022-07-23T15:24:27
    #
    #-------------------------------------------------
    
    QT       += core gui sql
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = RecData
    TEMPLATE = app
    
    #TEMPLATE = lib
    
    #DEFINES += RECDATA_LIBRARY
    
    # The following define makes your compiler emit warnings if you use
    # any feature of Qt which has been marked as deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS
    
    # You can also make your code fail to compile if you use deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    CONFIG += c++11
    
    SOURCES += \
            main.cpp \
            RecData.cpp \
            showdata.cpp
    
    HEADERS += \
            RecData.h \
            showdata.h
    
    FORMS += \
            RecData.ui \
            showdata.ui
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    2、RecData.h

    #ifndef RECDATA_H
    #define RECDATA_H
    
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    namespace Ui {
    class RecData;
    }
    
    class RecData : public QWidget
    {
        Q_OBJECT
    
    public:
        explicit RecData(QWidget *parent = nullptr);
        ~RecData();
    
    private slots:
        void on_tableView_doubleClicked(const QModelIndex &index);
    
        void on_tableView_clicked(const QModelIndex &index);
    
    private:
        Ui::RecData *ui;
    
        QModelIndex pindex;
        QString pstr;
    
    //    QStandardItemModel *model;
    };
    
    #endif // RECDATA_H
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    3、RecData.cpp

    #pragma execution_character_set("utf-8")
    #include "RecData.h"
    #include "ui_RecData.h"
    #include "showdata.h"
    #include "ui_showdata.h"
    
    QStandardItemModel *model = nullptr;
    
    RecData::RecData(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::RecData)
    {
        ui->setupUi(this);
    
        //QStandardItemModel *model = new QStandardItemModel();
        model = new QStandardItemModel;
    
        model->setHorizontalHeaderItem(0,new QStandardItem(QObject::tr("No")));
        model->setHorizontalHeaderItem(1,new QStandardItem(QObject::tr("时间")));
        model->setHorizontalHeaderItem(2,new QStandardItem(QObject::tr("实现方式")));
        model->setHorizontalHeaderItem(3,new QStandardItem(QObject::tr("使用方式")));
        model->setHorizontalHeaderItem(4,new QStandardItem(QObject::tr("频率")));
        model->setHorizontalHeaderItem(5,new QStandardItem(QObject::tr("主题")));
        model->setHorizontalHeaderItem(6,new QStandardItem(QObject::tr("描述")));
    
        ui->tableView->setModel(model);
        ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignCenter);
        ui->tableView->setColumnWidth(6,300);
        ui->tableView->verticalHeader()->hide();
        // 行选择,选中整行
        ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
        ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
        // 选择模式,单选
        ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
        //ui->tableView->setSelectionMode(QAbstractItemView::MultiSelection);
        //隔行变色
        ui->tableView->setAlternatingRowColors(true);
        //根据内容自动调整列宽
        ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
        //最后一行是否铺满剩余空间
        ui->tableView->horizontalHeader()->setStretchLastSection(true);
    
        //QString framedata = QString("[%1]:RX").arg(QTime::currentTime().toString("HH:mm:ss.zzz"));
        //model->setHorizontalHeaderItem(1,QStandardItem(framedata));
    
        QDateTime current_date_time = QDateTime::currentDateTime();    //获取当前系统时间
        QString current_date = current_date_time.toString("yyyy/MM/dd hh:mm:ss"); //时间格式
        qDebug() << current_date;
    
        model->setItem(0,0,new QStandardItem("1"));
        model->setItem(0,1, new QStandardItem("2022/07/23"));
        model->setItem(0,2, new QStandardItem("publish"));
        model->setItem(0,3, new QStandardItem("subscribe"));
        model->setItem(0,4, new QStandardItem("1HZ"));
        model->setItem(0,5, new QStandardItem("/10001901/2/1"));
        model->setItem(0,6, new QStandardItem("系统开机状态报文"));
    
        model->setItem(1,0,new QStandardItem("2"));
        model->setItem(1,1, new QStandardItem("2022/07/23"));
        model->setItem(1,2, new QStandardItem("publish"));
        model->setItem(1,3, new QStandardItem("subscribe"));
        model->setItem(1,4, new QStandardItem("1HZ"));
        model->setItem(1,5, new QStandardItem("/10001901/2/2"));
        model->setItem(1,6, new QStandardItem("点迹/航迹信息内容"));
    
        model->setItem(2,0,new QStandardItem("3"));
        model->setItem(2,1, new QStandardItem("2022/07/25"));
        model->setItem(2,2, new QStandardItem("publish"));
        model->setItem(2,3, new QStandardItem("subscribe"));
        model->setItem(2,4, new QStandardItem("1HZ"));
        model->setItem(2,5, new QStandardItem("/10001901/2/3"));
        model->setItem(2,6, new QStandardItem("BIT状态信息消息"));
    
        model->setItem(3,0,new QStandardItem("4"));
        model->setItem(3,1, new QStandardItem("2022/07/26"));
        model->setItem(3,2, new QStandardItem("publish"));
        model->setItem(3,3, new QStandardItem("subscribe"));
        model->setItem(3,4, new QStandardItem("2HZ"));
        model->setItem(3,5, new QStandardItem("/10001801/3/1"));
        model->setItem(3,6, new QStandardItem("声波信息消息"));
    
        model->setItem(4,0,new QStandardItem("5"));
        model->setItem(4,1, new QStandardItem("2022/08/01"));
        model->setItem(4,2, new QStandardItem("publish"));
        model->setItem(4,3, new QStandardItem("subscribe"));
        model->setItem(4,4, new QStandardItem("5HZ"));
        model->setItem(4,5, new QStandardItem("/10002201/4/2"));
        model->setItem(4,6, new QStandardItem("测量艇底层控制箱反馈数据"));
    
    
        //connect(ui->tableView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(on_tableView_doubleClicked(const QModelIndex &)));
    
        //connect(ui->tableView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(on_tableView_doubleClicked(const QModelIndex &)));
    
    }
    
    RecData::~RecData()
    {
        delete ui;
    }
    
    void RecData::on_tableView_doubleClicked(const QModelIndex &index)
    {
        showData *dataWindow = new showData;
        dataWindow->setWindowTitle("showData");
        dataWindow->show();
    
        QModelIndex row = ui->tableView->currentIndex();
        qDebug() << row;
    
        QStringList list;
    
        for(int i = 0; i < model->columnCount(); i++)
        {
            pindex = model->index(index.row(),i);
            pstr = model->data(pindex).toString();
            list << pstr;
            qDebug() << "data is: +" << pstr;
        }
    
        dataWindow->setData(list);
    
    }
    
    void RecData::on_tableView_clicked(const QModelIndex &index)
    {
        ui->plainTextEdit->clear();
    
        for(int i = 0; i < model->columnCount(); i++)
        {
            pindex = model->index(index.row(),i);
            pstr = model->data(pindex).toString();
            ui->plainTextEdit->appendPlainText(pstr);
            qDebug() << "data is: +" << pstr;
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137

    4、showdata.h

    #ifndef SHOWDATA_H
    #define SHOWDATA_H
    
    #include 
    
    namespace Ui {
    class showData;
    }
    
    class showData : public QWidget
    {
        Q_OBJECT
    
    public:
        explicit showData(QWidget *parent = nullptr);
        ~showData();
    
        void setData(QStringList &list);
    
    private:
        Ui::showData *ui;
    };
    
    #endif // SHOWDATA_H
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    5、showdata.cpp

    #include "showdata.h"
    #include "RecData.h"
    #include "ui_showdata.h"
    
    extern RecData *model;
    
    showData::showData(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::showData)
    {
        ui->setupUi(this);
    
    }
    
    showData::~showData()
    {
        delete ui;
    }
    
    void showData::setData(QStringList &list)
    {
        for(const auto &iter : list)
        {
            ui->plainTextEdit->appendPlainText(iter);
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    6、main.cpp

    #include "RecData.h"
    #include 
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        RecData w;
        w.show();
    
        return a.exec();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    7、RecData.ui

    在这里插入图片描述

    8、showdata.ui

    在这里插入图片描述

    四、项目下载地址

  • 相关阅读:
    JPA作持久层操作
    eladmin代码生成详细过程
    拒绝加班:巧用前端电子表格中构建公式树
    leetcode做题笔记154. 寻找旋转排序数组中的最小值 II
    P3051 [USACO12MAR]Haybale Restacking G
    《 Python List列表全实例详解系列(五)》——修改元素(修改单个、修改一组)
    windows编程-线程
    数据库(1)
    Linux系列学习(二) - Vim编辑器的介绍及使用、文件编译的过程、Makefile工具、Gdb调试器
    使用taichi 写了一个任意平台任意显卡推理的Linear
  • 原文地址:https://blog.csdn.net/Cappuccino_jay/article/details/126136727