QT가있는 GUI의 "정보"메시지 상자
-
20-09-2019 - |
문제
QMessageBox::about( this, "About Application",
"<h4>Application is a one-paragraph blurb</h4>\n\n"
"Copyright 1991-2003 Such-and-such. "
"For technical support, call 1234-56789 or see\n"
"<a href=\"http://www.such-and-such.com\">http://www.such-and-such.com</a>" );
이 코드는 두 가지 예외가있는 정보 상자를 작성하고 있습니다.
1) AAA.png 파일로 메시지 상자의 아이콘을 변경하고 싶습니다.
2) 그리고 링크를 클릭 할 수 있습니다. 하이퍼 링크처럼 보이지만 (파란색이고 밑줄이 든) 마우스 클릭은 작동하지 않습니다.
어떤 아이디어?
해결책
나는 당신이 관습을 만들어야한다고 생각합니다 QWidget
위젯에 대해. 이런 식으로, 당신은 당신이 원하는 모든 것을 위젯에 넣을 수 있습니다. 예를 들어, 배치 할 수 있습니다 QLabel
사용 openExternalLinks
클릭 가능한 링크 용 속성.
에 사용자 정의 이미지를 표시합니다 QWidget
, 이것 예시 도움이 될 수 있습니다.
다른 팁
아이콘의 경우 응용 프로그램 아이콘을 설정하면됩니다. 이 같은:
QApplication::setWindowIcon(QIcon(":/aaa.png")); // from a resource file
링크를 클릭 할 수있게하려면 QMessageBox::about
API 직접.
QMessageBox msgBox;
msgBox.setTextFormat(Qt::RichText); // this does the magic trick and allows you to click the link
msgBox.setText("Text<br /><a href=\"http://www.such-and-such.com\">http://www.such-and-such.com</a>");
msgBox.setIcon(yourIcon);
msgBox.exec();
향후 참조를 위해 문서는 기본 유형을 명시합니다. textformat은 qt :: autotext입니다. 문서는 다음을 말합니다 qt :: autotext는 qt :: richtext로 해석됩니다 qt :: mignberichtext ()가 true를 반환합니다. 그렇지 않으면 qt :: plaintext. 드디어, Mignberichtext는 빠르고 단순한 휴리스틱을 사용합니다. 주로 첫 번째 줄이 중단되기 전에 태그처럼 보이는 것이 있는지 확인합니다. 따라서 첫 번째 줄에 태그가 없으므로 일반 텍스트라고 가정합니다. explictly로 텍스트로 설정하십시오 msgBox.setTextFormat(Qt::RichText);
그에 따라 행동하게합니다.
main.cpp
QApplication app(argc, argv);
app.setWindowIcon(QIcon(":/images/your_icon.png"));
Mainwindow.cpp (하나가있는 경우 슬롯에)
void MainWindow::on_aboutAction_triggered()
{
QMessageBox::about(0, "window title", "<a href='http://www.jeffersonpalheta.com'>jeffersonpalheta.com</a>");
}