[C++, Qt] Automatyczne kopiowanie tekstu po jego zmianie
Ostatnio zmodyfikowano 2014-12-24 15:53
kitsss Temat założony przez niniejszego użytkownika |
[C++, Qt] Automatyczne kopiowanie tekstu po jego zmianie » 2014-12-24 15:11:47 2 dzień poznaje bibliotekę Qt i mam pewien problem. Otóż jak zrobić automatyczne skopiowanie zawartości pierwszego okienka tekstowego (tuż po tym, jak użytkownik coś tam wpisał) do drugiego? Plik nagłówkowy: #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow> #include <QApplication> #include <QTextStream> #include <QPushButton> #include <QString> #include <QTextEdit>
namespace Ui { class MainWindow; }
class MainWindow : public QMainWindow { QTextEdit * editor, * textout; Q_OBJECT public: explicit MainWindow( QWidget * parent = 0 ); ~MainWindow(); private: Ui::MainWindow * ui; };
#endif
Plik .cpp: #include "mainwindow.h" #include "ui_mainwindow.h"
MainWindow::MainWindow( QWidget * parent ) : QMainWindow( parent ) , ui( new Ui::MainWindow ) { ui->setupUi( this ); setMinimumSize( 750, 500 ); setMaximumSize( 1750, 1500 ); setGeometry( 300, 200, 1000, 700 ); editor = new QTextEdit( this ); editor->setGeometry( 400, 100, 200, 50 ); textout = new QTextEdit( this ); textout->setGeometry( 400, 400, 200, 100 ); connect( editor, SIGNAL( textChanged() ), textout, SLOT(...???...) ); }
MainWindow::~MainWindow() { delete ui; }
|
|
sajmon |
» 2014-12-24 15:20:36 Musisz zdefiniować slot private slots: void mojSlot(); Podem połączyć sygnał z twoim slotem connect( editor, SIGNAL( textChanged() ), this, SLOT( mojSlot() ) ); I na koniec void MainWindow::mojSlot() { } Jak widzisz slot to zwykła medota ale żeby Qt wiedziało że tą metodę chcesz wykorzystać jako slot musisz ją zdefiniować w private slots |
|
kitsss Temat założony przez niniejszego użytkownika |
» 2014-12-24 15:53:09 W pliku nagłówkowym dodałem deklaracje metody pod private slots: moj_slot(); W pliku .cpp dodałem definicje tej funkcji: void MainWindow::moj_slot() { this->textout->clear(); this->textout->insertPlainText( this->editor->toPlainText() ); }
i w konstruktorze wywołuje sygnał tak: connect( editor, SIGNAL( textChanged() ), this, SLOT( moj_slot() ) );
Działa! O to mi chodziło, co modyfikacja okienka tekstowego wejściowego wykonuje się automatyczne kopiowanie, po czym wklejanie w drugie okienko tekstowe. Dzięki wielkie, sorry za banalne pytanie ale dopiero z tym ruszam i nie wpadłem na definiowanie własnego slotu (prędzej myślałem o zagniezdzaniu sygnałów). |
|
« 1 » |