Как создать растр на фоне панели / TabPane / s.e

#c #qt #background #grid #raster

#c #qt #фон #сетка #растр

Вопрос:

Я пытаюсь создать что-то, куда вы можете добавлять разные вещи, например, Qt Creator (нет, я не хочу создавать новый, но мне нужна функция этого). Вы перетаскиваете некоторые элементы и размещаете их в любом месте TabPane. Моя проблема сейчас в том, как создать сетку / растр на заднем плане. Это должно выглядеть примерно так:

http://i.stack.imgur.com/QOA4K.png

Я имею в виду эти точки на заднем плане. Если я создам их с помощью двух циклов for , это займет часы, и это неэффективно или что-то еще. Должно быть более эффективное решение и намного проще.

Я программирую на c с Qt в качестве фреймворка. Пожалуйста, дайте мне какие-нибудь ссылки или что-нибудь еще, что я могу использовать.

Ответ №1:

Вы можете:

  • ограничьте перерисовку областью, которая действительно нуждается в обновлении, как описано в QWidget::paintEvent документации,
  • заполните контейнер QPoint в своих циклах вместо рисования точек и нарисуйте их все с помощью QPainter::drawPoints после цикла,
  • кэшируйте результат в QPixmap с прозрачностью и повторно используйте его, если размер окна не изменился (пример из Qt Quaterly).

Конечно, вам следует провести некоторое тестирование, чтобы увидеть, получаете ли вы что-либо вообще, выполняя любую из этих оптимизаций.