通过QT中的链接传递值

时间:2013-11-05 13:30:53

标签: c++ qt anchor qtextbrowser qurl

我正在用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之间)生成的链接连接到函数。

我的代码:

Compassindex.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

}

非常感谢您的回复!

1 个答案:

答案 0 :(得分:0)

我正在使用QTextBrowser为pqConsole提供可操作的用户界面。您可以在this answer了解更多信息。

我绕过Prolog调用,似乎一切正常。我的anchorClicked插槽就像

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

注意我也定义了(作为虚拟)

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

我没有触及setOpenLinks(),根据文档默认为true