Я изучаю QT5 для удовольствия, и я узнаю о картине для виджетов для игры 2d. Я просматривал множество учебников и документации, и хочу получить информацию о том, где исследовать здесь.QT painting для виджета
Из того, что я узнал, кажется, что рисование может быть выполнено только в функции paintEvent. Я пытаюсь понять, как сделать так, чтобы я мог условно рисовать что-то на виджетах в зависимости от ввода с клавиатуры. Например, я хочу, чтобы он печатал «alpha», если я нажимаю a и «beta», если я нажму b.
Очевидно, я мог бы сделать это с помощью глобальной строковой переменной, но какими были бы другие способы? Я ищу правильный способ QT для этого, любые предложения? Как бы вы реализовали следующий psudocode?
void paintEvent(QPaintEvent*)
{
QPainter painter(this);
//painter.drawText(QPoint(100,100), "example");
}
void keyPressEvent(QKeyEvent *k)
{
QString temp = k->text();
if(temp == "a")
//paint "alpha"
if(temp == "b")
//paint "beta"
}
Заранее благодарен!
Действительно? Это имеет смысл, но кажется слишком обходным. Как насчет использования QPixmap? Должен ли я активно хранить в переменных все, что я хочу, чтобы рисовать в paintEvent? – Nathan
Я не уверен, что QPixmap собирается сделать для вас в этом примере. И да, вам нужно поддерживать состояние отдельно от события рисования. Он будет вызван много раз автоматически системой окраски Qt, и вам нужно будет знать состояние вашего виджета в любой момент времени, а не только во время keyPress. – Chris
Это кажется довольно неэффективным. Есть ли способ, чтобы область рисования оставалась статической между вызовами paintEvent? – Nathan