16,235
社区成员
发帖
与我相关
我的任务
分享
void DrawDlg::paintEvent(QPaintEvent* event)
{
painter = new QPainter(this);
QFontMetrics metrics(font());
QRect rect = metrics.boundingRect(outStr);
QRect textRect(10, 6, rect.width(), rect.height());
painter->drawText(textRect, Qt::AlignLeft, outStr);
}
draw.h/////////////////
#ifndef DRAW_H
#define DRAW_H
#include <QtGui>
class DrawDlg : public QDialog
{
public:
DrawDlg(QWidget *parent = 0);
void paintEvent(QPaintEvent *);
void keyPressEvent(QKeyEvent *);
void resizeEvent(QResizeEvent *);
private:
QPainter *painter;
QString outStr;
int count;
int width;
QSize oldsize;
};
#endif
draw.cpp/////////////////
#include <QtGui>
#include "draw.h"
DrawDlg::DrawDlg(QWidget *parent)
:QDialog(parent)
{
this->resize(150, 50);
count = 0;
}
void DrawDlg::paintEvent(QPaintEvent *)
{
painter = new QPainter(this);
QRect rect(10, 6, 1000, 50);
painter->drawText(rect, Qt::AlignLeft, outStr);
}
void DrawDlg::keyPressEvent(QKeyEvent *e)
{
count = outStr.count();
if (e->key() == Qt::Key_Backspace)
{
outStr.remove(count-1, count-1);
oldsize.rwidth() -= 5;
width = oldsize.rwidth();
this->resize(width, 50);
update();
if (count == 1)
{
outStr.clear();
close();
}
return;
}
if (count >= 10)
{
oldsize.rwidth() += 10;
width = oldsize.rwidth();
this->resize(width, 50);
}
outStr += e->text();
update();
}
void DrawDlg::resizeEvent(QResizeEvent *)
{
oldsize = this->size();
}
void XXXXX::mousePressEvent(QMouseEvent* event)
{
......
resize(width()+1, height());
......
}