gpt4 book ai didi

c++ - QListView 中的 QT 超链接

转载 作者:太空宇宙 更新时间:2023-11-04 11:41:26 27 4
gpt4 key购买 nike

我使用 Qt 创建了一个包含 QListView 小部件的图形用户界面。

这个小部件正在从一个由两列构成的 QStandardItemModel 对象中获取数据:

  1. 描述;
  2. 和超链接

我正在尝试做的是使用用户的默认浏览器在 QListView 中打开页面的超链接实际获得描述。

到目前为止,我所尝试的是使用 HTML 实际构建数据,但这只会生成未呈现的纯 HTML 文本。

有人能帮忙吗?

编辑以显示使用的代码:

用于构建模型的代码:

QStandardItemModel * model = new QStandardItemModel;
for(int i =0; i < newsItems.size(); i++)
{
QList<QStandardItem *> rowItems;
rowItems.append(new QStandardItem("Description"));
rowItems.append(new QStandardItem("http://somesite.com"));

model->appendRow(rowItems);
}

“QPushButton”用于使用模型的代码

//The cTicExt.getTickerNews(strTicker)  simply returns the QStandardItemModel created above
ui->listView_News->setModel(cTicExt.getTickerNews(strTicker));

最佳答案

我认为你可以在没有模型的情况下做到这一点:

//ListWidget.h
#pragma once
#include <QListWidget>
#include <QListWidgetItem>
#include <QLabel>
#include <QUrl>
#include <QDesktopServices>

class ListWidget: public QListWidget
{
Q_OBJECT

public:
ListWidget()
{
QListWidgetItem* item = new QListWidgetItem("", this);
addItem(item);
QString description("Description:");
QString hyperlinkText("http://www.stackoverflow.com/");
QLabel* hyperlinkWidget = new QLabel( QString("<span>%1&nbsp;&nbsp;</span><a href=\"%2\">%2</a>").arg(description).arg(hyperlinkText), this);
setItemWidget(item, hyperlinkWidget);

connect(hyperlinkWidget, SIGNAL(linkActivated(const QString&)), this, SLOT(onHyperlinkActivated(const QString&)));
}

private slots:
void onHyperlinkActivated(const QString & link)
{
QDesktopServices::openUrl( QUrl(link) );
}
};

//main.cpp
#include <QtWidgets/QApplication>
#include "ListWidget.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

ListWidget w;
w.show();

return a.exec();
}

关于c++ - QListView 中的 QT 超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21236123/

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