#include #include #include #include class TestLabel : public QLabel { public: TestLabel(QWidget* parent) : QLabel(parent) {} protected: virtual void paintEvent(QPaintEvent* event) { QLabel::paintEvent(event); QPainter painter(this); painter.setPen(QPen(Qt::red)); painter.drawRect(rect().adjusted(0,0,-1,-1)); } }; /////////////////////////////////////////////////////////////////////////////////////// int main(int argc, char **argv) { QApplication app(argc, argv); /////////////////////////////////////////////////////////// QWidget* ref = new QWidget(NULL, Qt::Window | Qt::FramelessWindowHint); QString japan; for (uint32 ch = 0; ch < 6; ++ch) japan += QChar(0x30F0 + ch); QFont font; font.setStyleHint(QFont::System); // bug is also reproduced with Arial font //QFont font("Arial", 12, 72, false); QLabel *label = new TestLabel(ref); label->setText( "Reference"); label->move(10,10); label->setFont(font); label = new TestLabel(ref); label->setText("Refer " + japan); // bug isn't reproduced label->move(100,10); label->setFont(font); label->resize(140, 16); label = new TestLabel(ref); label->setText("Refer " + japan + ""); // the bug is reproduced label->move(250,10); label->setFont(font); label->resize(140, 16); /////////////////////////////////////////////////////////// QPlainTextEdit* edit = new QPlainTextEdit("Edit Line 1\nEdit Line 2\nEdit Line 3", ref); edit->setGeometry(QRect(10,30,80,140)); edit->setReadOnly(true); edit->setFont(font); edit = new QPlainTextEdit("Line " + japan + "\nLine "+ japan + "\nLine "+ japan, ref); edit->setGeometry(QRect(100,30,140,140)); edit->setReadOnly(true); edit->setFont(font); ref->setAutoFillBackground(true); ref->setGeometry(QRect(300,200,400,340)); ref->show(); return app.exec(); }