Масштабирование координат вызывает слишком большие размеры шрифта в QPainter :: drawText - PullRequest
2 голосов
/ 16 октября 2010

Я работаю над простым модулем 2D-визуализации для кода моделирования MD.То, что я пытаюсь сделать, это рисовать позиции моделируемых молекул, используя:

myPainter.drawEllipse(myQPoint,myRx,myRy)

И эта часть работает очень хорошо в моем виджете визуализации.Проблема, которая оказалась проблемой, - это написание текста, который должен представлять идентификатор каждой молекулы (целое число).

myPainter.drawText(myPosPoint,QString::number(mySoftMolecule2D->getID()));

Рисует текст, но он слишком большой.Вероятно, это потому, что мне нужно использовать масштабирование кооридантов для myPainter, чтобы легко рисовать молекулы.

myPainter.scale(myWidgetWidth_ / simSizeX_ , myWidgetHeight_ / simSizeY_);
//    myWidgetWidth_ is much bigger simSizeX_
//    myWidgetHeight_ is much bigger simSizeY_

Я пытался поместить такие строки перед тем, как выполнить масштабирование координат в myPainter:

QFont myFont;
myFont.setPointSizeF(1.0); // values less than 1.0 doesn't work
myFont.setFamily("Courier");
myPainter.setFont(myFont);

, но метка молекул все еще слишком велика.

Заранее благодарим за любую помощь.

Ответы [ 2 ]

0 голосов
/ 18 октября 2010

Запомните позиции, в которых вы хотите нарисовать текст, затем рисуйте в два этапа. Первая - это молекулы, вторая - текст. Прежде чем рисовать молекулы, сохраните состояние художника и восстановите его, прежде чем рисовать текст. Это должно предотвратить масштабирование текста, в то же время позволяя масштабировать молекулы.

0 голосов
/ 16 октября 2010

Поскольку вы хотите изменить размер шрифта на основе фиксированного размера в пикселях, попробуйте использовать QFont :: setPixelSize (int pixelSize) вместо setPointSize().

...