2015-09-15 15 views
7
auswählen

Gibt es eine Möglichkeit, eine QMessageBox anzuzeigen, die auswählbaren Text hätte, so dass Benutzer in der Lage sein würde, ihre Maus oder Tastatur zu verwenden, um irgendwie ihren Inhalt auszuwählen und zu kopieren? Ich weiß, dass ich Labels erstellen kann, die das tun, aber ich bin mir nicht sicher über die Message Boxes. Die Standard-Message-Box in MS Windows scheint das nicht zuzulassen.QMessageBox Sie können Text von

+0

Was ist mit 'QMessageBox's' setTextInteractionFlags' und setze es auf 'Qt :: TextSelectableByMouse'? – Gombat

Antwort

7

Ich ziehe diese mit Stylesheet zu lösen.
Run dieses ein Mal, und dies wird alle Meldungsfelder erstellt überall in Anwendung auswirken:

qApp->setStyleSheet("QMessageBox { messagebox-text-interaction-flags: 5; }"); 

Ich habe Test diesen mit Qt 5.5 für OS X, und es funktioniert.

+0

Wird es an bestehendes Stylesheet angehängt oder komplett überschrieben? Ich bin mir nicht sicher, ob jemand anders in diesem Projekt nicht bereits einen ähnlichen Code verwendet hat. – Petr

+0

überschreibt es vorhandene Stylesheets, die auf 'QApplication' angewendet werden. Wenn Sie bereits Stylesheets verwenden, fügen Sie diesen Eintrag einfach zu Ihrer Datei hinzu. –

7

Sie benötigen die TextSelectableByMouse Interaktion Flag zu aktivieren:

QMessageBox mb(QMessageBox::NoIcon, "New message", 
       "A lot of text", QMessageBox::Ok, this); 
mb.setTextInteractionFlags(Qt::TextSelectableByMouse); 
int dialogResult = mb.exec(); 
+0

Dies scheint mit Qt4 nicht zu funktionieren. *** Fehler C2039: 'setTextInteractionFlags': ist kein Mitglied von 'QMessageBox' *** – drescherjm

+0

Ich sehe, dass in Qt-5.1 hinzugefügt wurde. Ich musste das Stylesheet verwenden, da ich Qt5 aufgrund einer komplizierten Bibliotheksabhängigkeit nicht in der Anwendung verwenden kann, an der ich arbeite. – drescherjm

Verwandte Themen