我在子类菜单栏中绘制了一些文本。并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(".");
}