Я недавно новичок в мире c ++.Мой опыт работы в основном с Python и некоторыми языками сценариев для конкретных приложений.В любом случае, я хотел получить некоторую общую обратную связь и преобразовать свой подкласс QLabel, написанный на pyside, и преобразовать его для работы с приложением C ++ в Qt Creator.Я не ищу кого-то, кто сделает весь проект для меня.Мне просто нужно несколько советов о том, как добавить / настроить пользовательский элемент управления в моем проекте Qt.
Вы заметите, что в моем подклассе я просто переписал событие рисования метки, чтобы создать пунктиршаблон для заполнения пустого пространства справа от метки, как показано здесь:
Код для моей пользовательской метки в Pyside:
class QLabelHeader(QtWidgets.QLabel):
def __init__(self, parent=None, **kwargs):
super(QLabelHeader, self).__init__(parent)
# events
def paintEvent(self, event):
# calculate font width
metrics = QtGui.QFontMetrics(self.font())
text_width = metrics.boundingRect(self.text()).width()
# calculate dimensions
y = int(self.height() * 0.5 - 2)
x = text_width + 4
width = self.width() - x
# create pattern
px = QtGui.QPixmap(4,4)
px.fill(QtCore.Qt.transparent)
pattern_painter = QtGui.QPainter(px)
pattern_painter.setPen(QtGui.QPen(QtCore.Qt.NoPen))
pattern_painter.setBrush(QtGui.QBrush(QtGui.QColor(200,200,200), QtCore.Qt.SolidPattern))
pattern_painter.drawRect(0,0,1,1)
pattern_painter.drawRect(2,2,1,1)
pattern_painter.end()
# draw tiled pixmap
painter = QtGui.QPainter(self)
painter.drawTiledPixmap(x,y,width,5,px)
painter.end()
super(QLabelHeader, self).paintEvent(event)
Вопрос:
Я видел другие примеры проектов в Интернете, которые включают настраиваемые элементы управления со структурой папок, как показано здесь, которая является подпапкой в более крупном проекте.Как они создают эту структуру папок и ее набор файлов?
В качестве дополнительного бонуса, если кто-то захочет показать мне код предварительного просмотра / псевдо-кода того, как будут выглядеть мои файлы h и cpp для переопределения события рисования QLabel, такого как мой код pyside.