|
//drawer.h #include <QWidget> #include <QString> class Drawer:public QWidget { Q_OBJECT public: Drawer(QWidget *parent=0); protected: void paintEvent(QPaintEvent *event); QSize sizeHint()const; public slots: void setCurText(const QString &text); private: QString curText; }; //drawer.cpp #include "drawer.h" #include <QPainter> #include <QPen> Drawer::Drawer(QWidget *parent):QWidget(parent) { curText=""; } void Drawer::paintEvent(QPaintEvent *) { QPainter painter(this); int x=width()/2; int y=height()/2; painter.drawText(x,y,curText); } void Drawer::setCurText(const QString &text) { if(curText!=text) { curText=text; update(); } } QSize Drawer::sizeHint()const { return QSize(100,100); } //mainwin.h #include "drawer.h" #include <QWidget> #include <QTextEdit> class MainWindow:public QWidget { Q_OBJECT public: MainWindow(); public slots: void setDrawerText(); private: QTextEdit *textEdit; Drawer *drawer; }; //mainwin.cpp #include "mainwin.h" #include <QVBoxLayout> MainWindow::MainWindow() { textEdit=new QTextEdit; drawer=new Drawer; QVBoxLayout *mainlay=new QVBoxLayout; mainlay->addWidget(drawer); mainlay->addWidget(textEdit); setLayout(mainlay); connect(textEdit,SIGNAL(textChanged()),this,SLOT(setDrawerText())); } void MainWindow::setDrawerText() { drawer->setCurText(textEdit->toPlainText()); } //main.cpp #include <QApplication> #include "mainwin.h" int main(int argc,char **argv) { QApplication app(argc,argv); MainWindow w; w.show(); return app.exec(); }
|