gpt4 book ai didi

c++ - 将 QListView 与 QStringListModel 一起使用时无法使用 setData 设置工具提示

转载 作者:行者123 更新时间:2023-11-30 01:42:33 26 4
gpt4 key购买 nike

我在我的应用程序中使用 QListView 小部件,并将 QStringListModel 作为模型。完整代码如下:

main.cpp

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

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

return a.exec();
}

主窗口.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
};

#endif // MAINWINDOW_H

主窗口.cpp

#include "mainwindow.h"
#include <QStringListModel>
#include <QListView>

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setFixedSize(400, 400);

auto listView = new QListView;
setCentralWidget(listView);

auto model = new QStringListModel;
listView->setModel(model);

QStringList list;
list << "item 1" << "item 2";
model->setStringList(list);
auto idx = model->index(0);
model->setData(idx, "Some tooltip", Qt::ToolTipRole);
model->setData(idx, "actually, item 11", Qt::DisplayRole);
}

结果:

enter image description here

可以看出,第二次 setData 调用成功,项目文本发生更改,但工具提示根本不起作用;我可以将鼠标悬停在第一个条目上,但没有任何反应。

我做错了什么?

最佳答案

QStringListModel 的数据结构是一个简单的字符串列表。它只处理 Qt::DisplayRole 和/或 Qt::EditRole。如果您检查 setData() 的返回值,您会发现它为 Qt::ToolTipRole 返回了 false。您可能想要切换到可以处理多个角色的模型,例如 QStandardItemModel

关于c++ - 将 QListView 与 QStringListModel 一起使用时无法使用 setData 设置工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39439636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com