0

我正在用 C++ 和 qt4 编写一个程序,该程序应该根据输入文件中的数据在 QTextBrowser 中生成各种(数百个)可点击链接。

这个想法是,当用户单击其中一个链接时,一个值将传递给名为“on_QTextBrowser_anchorClicked(QUrl)”的函数。

我创建了一个显示 HTML 代码的 QTextBrowser,并且我设法为添加的每个元素创建不同的链接。问题在于将 href="URL" 中定义的 Url 传递给 QUrl。

当 QTextBrowser 的 setOpenLinks 为“true”时,我打印 URL 我得到正确的结果。但是我不能将这个 URL(它是一个值而不是一个真正的 URL)传递给一个函数。当 setOpenLinks 为“false”时,anchorClicked(Url) 函数将“”作为 Url 传递,我希望在 setOpenLinks=true 时打印 URL。

我怎样才能做到这一点?有没有更好的方法(可能是)使用 QTextBrowser 将各种数量(大约在 50-1000 之间)生成的链接连接到函数。

我的代码:

指南针索引.cpp

void CompassIndex::on_seqBrowser_anchorClicked(QUrl input)
{
    QString Input = input.toString();
    QByteArray nByte = Input.toUtf8();
    std::cerr<<Input.data();         //Print Url on the screen to ensure value is passed
}

void CompassIndex::readfile()
{
    QString Line;
    Int number_out=0;
    ...                //Imports data that will be printed in the QTextBrowser
    ...                //loop for creating links for n number of elements
    Line="<a href=\"";
    Line+=number_out;  //the value (fake Url) that I want to pass to anchorClicked()
    Line+="\">";
    Line+=nameArr[n];  //inserts the name for the link
    Line+="</a>";
    number_out++;
    ...
    ui->seqBrowser->insertHtml(Line);
    ...                //end of loop

}

非常感谢您的回复!

4

1 回答 1

0

I'm using QTextBrowser to provide an actionable user interface for pqConsole. You can read more about in this answer.

I pass around Prolog invocations, and all seems to be working. My anchorClicked slot is as simple as

void ConsoleEdit::anchorClicked(const QUrl &url) {
    query_run(url.toString());
}

Note I also have defined (as dummy)

void ConsoleEdit::setSource(const QUrl &name) {
    qDebug() << "setSource" << name;
}

I don't touch setOpenLinks(), that defaults to true according to the docs.

于 2013-11-05T14:29:57.480 回答