サブクラス化されたメニューバーにテキストを描画します。そしてQFontMetrics
、トリミングされた幅の長方形を返します。これは Windows 7 で発生します。しかし、KDE を使用する Debian では期待どおりに動作します。なぜそれが起こるのですか、どうすれば修正できますか?
class MainMenuBar : public QMenuBar
{
public:
explicit MainMenuBar(QWidget *parent = 0);
protected:
virtual void paintEvent(QPaintEvent *event);
private:
QFont _font;
};
MainMenuBar::MainMenuBar(QWidget *parent) : QMenuBar(parent)
{
_font = font();
}
void MainMenuBar::paintEvent(QPaintEvent *event)
{
QMenuBar::paintEvent(event);
QPainter painter(this);
painter.setFont(_font);
QRect rect = geometry();
rect.setRight(200);
rect.setLeft(rect.right() - QFontMetrics(_font).width("WWW")); // Cuts
//rect.setLeft(rect.right() - QFontMetrics(font()).width("WWW")); // Doesn't cut
painter.drawText(rect, Qt::AlignVCenter, "WWW");
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setMenuBar(new MainMenuBar(this));
menuBar()->addAction(".");
}