Po otwarciu QMessageBox
ze szczegółowym zestawem tekstowym ma on Pokaż szczegóły przycisk. Chciałbym, aby szczegóły były wyświetlane domyślnie, a nie użytkownik musi najpierw kliknąć przycisk Pokaż szczegóły ....QMessageBox "pokaż szczegóły"
5
A
Odpowiedz
2
O ile mogę powiedzieć z szybkim spojrzeniem przez the source, jest to łatwy sposób, aby bezpośrednio otworzyć tekst szczegółów, a nawet dostęp do „Pokaż dane ...” guzik. Najlepszą metodą, jaką mogłem znaleźć, było:
- Powtórz wszystkie przyciski w oknie wiadomości.
- Wyodrębnij tę z rolą
ActionRole
, ponieważ odpowiada ona przyciskowi "Pokaż szczegóły ...". - Zadzwoń ręcznie do metody
click
.
Przykładowy kod w akcji:
#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
Funkcja ta rozszerzy szczegóły domyślnie, a także zmienić rozmiar pola tekstowego do większego rozmiaru:
#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);
Powiązane problemy
- 1. HTML w QMessageBox
- 2. Jak mogę zmienić rozmiar QMessageBox?
- 3. Wyświetl szczegóły importera
- 4. Missing Index Szczegóły SQL
- 5. Aby uzyskać szczegóły tabeli
- 6. LINQ: Pobierz szczegóły tabeli
- 7. Szczegóły płatności iAdam
- 8. Wyświetl grafikę Qt, pokaż obraz! Widget
- 9. Jak dodać przycisk niestandardowy do QMessageBox w PyQt4
- 10. fullCalendar - Nazwa i szczegóły wydarzenia
- 11. Szczegóły błędu bez ślad stosu
- 12. Pobierz szczegóły aplikacji z Google Play
- 13. jak zdobyć szczegóły wydarzenia z google calendar
- 14. Uzyskaj szczegóły konta użytkownika rozliczeń w aplikacji
- 15. Szczegóły dotyczące Endian-ness i .Net?
- 16. Przeczytaj szczegóły certyfikatu SSL na temat WP8
- 17. jak pobrać szczegóły pliku audio w iPhone'ie
- 18. Szczegóły serializacji na serialu HDF5 w pandach?
- 19. Szczegóły o „super” zamiennika w rodzajowych java
- 20. TFS - Znajdź szczegóły znanego zestawu zmian ID
- 21. Wymagaj Szczegóły dotyczące węzła krawędzi w klastrze
- 22. Szczegóły wyjątku: System.Web.HttpException: Maksymalna długość żądania przekroczyła
- 23. iOS - zestaw Szczegóły Przycisk Ujawnienie na MKAnnotationView
- 24. Floating Point Divider Szczegóły implementacji sprzętu
- 25. Tkanina Jak wyświetlić/wyeksportować szczegóły wydarzeń
- 26. Szczegóły ostatniego zadania cron w systemach uniksowych?
- 27. Wyświetl szczegóły zestawu zmian TFS w konsoli
- 28. Hibernate: Szczegóły implementacji proxy (Lazy Fetching)
- 29. Szczegóły implementacji Double.isFinite - dlaczego DoubleConsts.MAX_VALUE zamiast Double.MAX_VALUE?
- 30. Jak uzyskać szczegóły wyjątków w XCode 4.6?
Twój przykład nie Pracuj dla mnie. Kiedy przechodzę przez przyciski, znajduje tylko standardowe przyciski (np. "Tak" i "Nie"). Przycisk "Pokaż szczegóły" nie znajdował się wśród nich w czasie przeszukiwania ich. Korzystanie z wersji Qt 4.7.4. –
Nie jestem pewien przepraszam - z pamięci testowałem to na Qt 5.x. Może spróbuj przejrzeć każdy element potomny 'QAbstractButton' w oknie komunikatu, używając rekurencyjnego wywołania' findChildren'? – ajshort
Tak, próbowałem również szukać przycisku "Pokaż szczegóły" za pomocą 'findChildren()' również. Naprawdę mogę znaleźć przycisk "Pokaż szczegóły" w ten sposób, ale jego rolą w chwili, gdy go znajduję jest "InvalidRole". Na wszelki wypadek zadzwoniłem do przycisku "kliknij()", aby zobaczyć, co się stanie. Nie miało to żadnego skutku. –