参考博客:https://blog.csdn.net/yifanmoon/article/details/80495293
以下内容就是根据大神博客的代码进行部分修改过来的
界面布局,就是需要拖个listView的控件,如图:
在.h文件中代码如下:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QStringListModel>
#include <QStandardItemModel>
#include <QModelIndex>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
#pragma execution_character_set("utf-8")
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public:
QStringListModel *Model;
QStandardItemModel *ItemModel;
void init();
private slots:
void showClick(QModelIndex index);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
在.cpp文件中代码如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
init();//开始进行初始化
//绑定信号和槽,一旦进行点击事件,就直接将跳出来显示内容QMessageBox里面的内容
connect(ui->listView,SIGNAL(clicked(QModelIndex)),this,SLOT(showClick(QModelIndex)));
}
MainWindow::~MainWindow()
{
delete ui;
}
//初始化listView,并插入里面的值
void MainWindow::init()
{
ItemModel = new QStandardItemModel(this);
QStringList strList;
strList.append("设备1");
strList.append("设备2");
strList.append("设备3");
strList.append("设备4");
strList.append("设备5");
strList.append("设备6");
int nCount = strList.size();
for(int i = 0; i < nCount; i++)
{
QString string = static_cast<QString>(strList.at(i));
QStandardItem *item = new QStandardItem(string);
ItemModel->appendRow(item);//加入每行的值
}
ui->listView->setModel(ItemModel);
ui->listView->setFixedSize(200,300);//设置listView的大小
}
void MainWindow::showClick(QModelIndex index)
{
QString strTemp;
strTemp = index.data().toString();
QMessageBox msg;//提出messageBox里面的内容
msg.setText(strTemp);
msg.exec();
}
在main.cpp文件中代码如下:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
最后结果出现的图形如下:
完成!