Seite 1 von 2

[gelöst] markierung der maus bekommen

Verfasst: 19. Juli 2005 23:04
von rulzmaker
Wenn z.B. die Maus in einem x-beliebigen Fenster Zeichen markiert (mit gedrückter Maustast und dann ziehen + loslassen) bietet qt dazu auch eine Möglichkeit die markierten Wörter zu bekommen?

Verfasst: 19. Juli 2005 23:13
von FlorianBecker
Z.B. aus einem TextEdit? oder ein spezielles Widget?

http://doc.trolltech.com/3.3/qtextedit. ... dText-prop

Verfasst: 20. Juli 2005 01:47
von rulzmaker
Ich meine z.B. wennich im Konquere Browser etwas markiere, dass ich diesen markierten Textabschnitt in mein Programm verarbeiten kann.

Verfasst: 20. Juli 2005 07:51
von FlorianBecker
Über QClipboard oder dcop.

Verfasst: 20. Juli 2005 14:30
von rulzmaker

Code: Alles auswählen

#include <clipboard.h>
....
QClipboard *cb = QApplication::clipboard();

    // Copy text from the clipboard (paste)
    QString text = cb->text(QClipboard::Clipboard);
    if ( !text.isNull() )
        qDebug( "The clipboard contains: " + text );

    // Copy text into the clipboard
    cb->setText( "This text can be pasted by other programs",
                 QClipboard::Clipboard );
main.cpp: In function `int main(int, char**)':
main.cpp:47: error: incomplete type `QClipboard' does not have member `
Clipboard'
main.cpp:47: error: `text' undeclared (first use this function)
main.cpp:47: error: (Each undeclared identifier is reported only once for each
function it appears in.)
main.cpp:53: error: incomplete type `QClipboard' does not have member `
Clipboard'
main.cpp:53: error: `setText' undeclared (first use this function)
make[2]: Leaving directory `/home/toni/programmierung_m/qtclipboard/clipboard'

Verfasst: 20. Juli 2005 14:38
von FlorianBecker
#include <qclipboard.h>

und dann denke ich mal sind die Fehler weg.

Verfasst: 20. Juli 2005 14:45
von rulzmaker
Jip, hast Recht. Was ist dcop?

Verfasst: 20. Juli 2005 14:49
von FlorianBecker
DCOP ist das Desktop Communication Protocoll von KDE3. Da kannst du vielleicht solche Informationen besser/einfacher heraus bekommen. Es ist immer problematisch zwischen Anwendungen zu arbeiten, die nicht auf eine gemeinsame API zugreifen.

Verfasst: 20. Juli 2005 14:55
von rulzmaker
Kommt eher nicht für mich in Frage. Das Programm sollte auch unter Windows laufen.

Mal was anderes: Kann man auch Events (wenn Knopf im eigenen Programm gedrückt wurde) abfangen ohne den QT-Designer zu benutzen? - ich finde dazu nämlich kein passendes Beispiel in der Dokumentation.

Verfasst: 20. Juli 2005 14:57
von FlorianBecker
pressKeyEvent muss dafür überlagert werden.

Verfasst: 20. Juli 2005 15:06
von rulzmaker
Uff, hast du dafür ein kurzes Beispiel ? :oops:

Verfasst: 20. Juli 2005 15:10
von pm_Snake
such einfach mal nach "keyPressEvent" in den Qt-Beispielen. Dort müsste eigentlich was dabei sein.

Verfasst: 20. Juli 2005 15:12
von FlorianBecker
Definition:

Code: Alles auswählen

class MyClass : public QWidget {

public:
  MyClass( QWidget *parent );
  ~MyClass();

protected:
  void pressKeyEvent( QKeyEvent *event );
};
Source:

Code: Alles auswählen

void MyClass::pressKeyEvent( QKeyEvent *event ) {

  if ( event -> key() == Qt::Key_F1 )
    qDebug( "F1 wurde gedrückt" );
  QWidget::pressKeyEvent( event );
}
Ergänzende Zeilen musst dir halt denken.

Verfasst: 20. Juli 2005 15:20
von pm_Snake
Bei mir in der Doku steht aber keyPressEvent() :lol:

Verfasst: 20. Juli 2005 15:25
von FlorianBecker
Dann nimm das.