Вызов перекрасить () на просмотр - PullRequest
0 голосов
/ 22 октября 2019

Существует вид, в котором метод рисования переопределен. Существует также кнопка, при нажатии на которую представление должно вызывать метод repaint(). Для удобства в этом примере представление не связано ни с какими данными из модели.

#include <QApplication>
#include <QPainter>
#include <QPaintEvent>
#include <QListView>
#include <QScrollArea>
#include <QPushButton>

class View :public QListView {
public:
    void paintEvent(QPaintEvent* event) override
    {
        QListView::paintEvent(event);
        QPainter painter(viewport());
        static int x = 10, y = 10;
        painter.drawPixmap(x, y, QPixmap("cheker.png"));
        x += 10;
        y += 10;
    }
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    View view;

    QPushButton btn("btn");
    btn.move(100, 300);
    QObject::connect(&btn, SIGNAL(clicked()), &view, SLOT(repaint()));

    btn.show();
    view.show();
    return a.exec();
}

Я обнаружил, что после первого нажатия на кнопку, repaint() вызывается только один раз. Нажатие кнопки 2-й, 3-й, 4-й и т. Д. repaint() не вызывается. Почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...