QMessageBox
を詳細テキストセットで開くと、ショーの詳細ボタンが表示されます。 詳細を表示するのではなく、詳細をデフォルトで表示したいと思います...ボタンを最初に押します。QMessageBox "詳細を表示"
5
A
答えて
2
私の知る限りthe sourceを通じて簡単に見てから言うことができるように、直接詳細テキストを開く、または実際に「詳細の表示...」ボタンにアクセスするための簡単な方法はありません。私が見つけた最良の方法は、メッセージボックスのすべてのボタンを繰り返して行うことでした:
- ロール「
ActionRole
」を抽出します。これは、「詳細を表示...」ボタンに相当します。 - これについて手動で
click
メソッドを呼び出します。
アクションでこののコードサンプル:
#include <QAbstractButton>
#include <QApplication>
#include <QMessageBox>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QMessageBox messageBox;
messageBox.setText("Some text");
messageBox.setDetailedText("More details go here");
// Loop through all buttons, looking for one with the "ActionRole" button
// role. This is the "Show Details..." button.
QAbstractButton *detailsButton = NULL;
foreach (QAbstractButton *button, messageBox.buttons()) {
if (messageBox.buttonRole(button) == QMessageBox::ActionRole) {
detailsButton = button;
break;
}
}
// If we have found the details button, then click it to expand the
// details area.
if (detailsButton) {
detailsButton->click();
}
// Show the message box.
messageBox.exec();
return app.exec();
}
0
この機能はデフォルトで詳細を展開し、また、より大きなサイズにテキストボックスのサイズを変更します:
#include <QTextEdit>
#include <QMessageBox>
#include <QAbstractButton>
void showDetailsInQMessageBox(QMessageBox& messageBox)
{
foreach (QAbstractButton *button, messageBox.buttons())
{
if (messageBox.buttonRole(button) == QMessageBox::ActionRole)
{
button->click();
break;
}
}
QList<QTextEdit*> textBoxes = messageBox.findChildren<QTextEdit*>();
if(textBoxes.size())
textBoxes[0]->setFixedSize(750, 250);
}
... //somewhere else
QMessageBox box;
showDetailsInQMessageBox(box);
関連する問題
- 1. カスタムエンティティの詳細を表示
- 2. 詳細ボタンを表示
- 3. 詳細表示表示の問題
- 4. マスター詳細データウィンドウの詳細を新しいウィンドウに表示
- 5. より詳細な "詳細" apache/phpプロセスの表示方法
- 6. テーブルの表示詳細の開示iOS
- 7. 500内部サーバーエラーの詳細を表示
- 8. celltableの行の詳細を表示
- 9. Matlab:ファイルブラウザでクラスファイルの詳細を表示
- 10. android cardview onclick詳細を表示する
- 11. 文字数 - 詳細を表示
- 12. マスター詳細ページ - Androidのメニューアイコンを表示
- 13. ページのユーザーの詳細を表示
- 14. hive - テーブルの列の詳細を表示
- 15. フッターセクションの下の詳細セクションを表示
- 16. アクティブなメンバーの詳細を表示
- 17. ...アクセラレーションモバイルページ(AMP)の詳細を表示
- 18. ワードプレスイメージギャラリーサムネイルグリッド - クリックして詳細を表示
- 19. PhpStorm - 詳細なdoctag情報を表示
- 20. angular2 openlayers on click map詳細を表示
- 21. 表示する行の詳細は
- 22. 表示行の詳細は、DataGrid
- 23. 詳細表示の戻るボタン
- 24. リストビュー(詳細表示)のソートアイコンc#
- 25. テーブル '詳細表示'検索後にリセット
- 26. フォームの検証と詳細の表示
- 27. Android:データベース詳細表示問題
- 28. TableViewと詳細ビューのセル表示
- 29. [詳細を表示]をクリックしてコンテンツを表示
- 30. MVC3 Razor WebGrid行の詳細を表示するツールチップを表示
あなたの例ではしませんでした私のために働く。ボタンを反復すると、標準ボタン(「はい」や「いいえ」など)のみが検索されます。 「詳細を表示」ボタンは、その間にクロールしていたときには表示されませんでした。 Qtバージョン4.7.4を使用しています。 –
ご迷惑をおかけしています - 私はQt 5.xでこれをテストしました。再帰的な 'findChildren'呼び出しを使って、メッセージボックスの各' QAbstractButton'子を調べてみてください。 – ajshort
はい、私は "findChildren()"を使って "詳細を表示"ボタンを探してみました。私は本当にそのような方法で "詳細を表示"ボタンを見つけることができますが、私はそれが 'InvalidRole'であるとわかった時点での役割です。いずれにせよ、私はそのボタンで 'click()'を呼びました。それは効果がなかった。 –