我正在用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
}
非常感谢您的回复!
答案 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
。