나는 QTableView
내 프로젝트에서 여러 열에 하이퍼 링크가 포함 된 데이터가 표시됩니다. 열의 셀을 클릭하면 브라우저에서 링크 된 페이지가 열리도록 설정하기 위해 이들에 대한 델리게이트 클래스를 사용합니다. 이것은 하나의 페이지에 하나의 값만 연결될 때 훌륭하게 작동합니다. 예를 들어, 열에 A, B, C 등의 값이있는 mysite.com에 대한 검색 값 목록이있을 수 있습니다. 사용자가 A가있는이 열의 셀을 클릭하면 mysite에 대한 하이퍼 링크가 열립니다. com / A (다시 말하지만이 부분은 잘 작동합니다). 그러나 이제 "A, B"와 같은 열을 추가해야합니다. 여기에서 클릭하는 항목에 따라 동일한 셀에서 A AND B를 검색하는 링크를 지원해야합니다. 나는 한동안 온라인에서 검색을 해왔고 아마도 이것은 대리인과 함께 할 수 없을 것 같습니다. 나는에 라인이QTextBrowser
내 코드의 다른 곳에서 다음과 같이 HTML을 통해이 작업을 수행 할 수 있습니다.
QString toShow;
for(int i = 0; i < searchValueList.size(); i++)
{
toShow.append("`<a href=\"www.mysite.com/" + searchValueList.at(i) + "\"`>" +
searchValueList.at(i) + "`</a`>";
}
그러나 QTableView
HTML 서식 또는 서식있는 텍스트를 인식 하도록 셀을 설정하는 방법을 찾을 수 없으며 아쉽게도 그것이 가능할지 확신하지 못합니다. 내가 달성하려는 일을 할 수있는 방법이 전혀 없습니까?
QItemDelegate
서식있는 텍스트를 표시 할 수있는 특정 열에 대한 사용자 지정 을 만들 수 있습니다 . 대리인은 다음과 같을 수 있습니다.
class RichTextDelegate: public QItemDelegate
{
public:
RichTextDelegate(QObject *parent = 0);
void paint( QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index ) const;
};
RichTextDelegate::RichTextDelegate(QObject *parent):QItemDelegate(parent)
{
}
void RichTextDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if( option.state & QStyle::State_Selected )
painter->fillRect( option.rect, option.palette.highlight() );
painter->save();
QTextDocument document;
document.setTextWidth(option.rect.width());
QVariant value = index.data(Qt::DisplayRole);
if (value.isValid() && !value.isNull())
{
document.setHtml(value.toString());
painter->translate(option.rect.topLeft());
document.drawContents(painter);
}
painter->restore();
}
특정 열에 대한 항목 대리자를 설정해야합니다.
ui->tableView->setItemDelegateForColumn(colIndex, new RichTextDelegate(ui->tableView));
이제 행의 특정 열에 대한 입체 텍스트를 서식있는 텍스트로 설정하면 제대로 표시됩니다.
model->item(rowIndex, colIndex)->setText(someRichText);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다