【发布时间】:2019-02-16 00:24:09
【问题描述】:
我最近刚接触 c++ 世界。我的背景主要是 python 和一些特定于应用程序的脚本语言。 Anywho,我想获得一些一般性反馈,并转换我用 pyside 编写的 QLabel 子类,并将其转换为与 Qt Creator 中的 C++ 应用程序一起使用。我不是在找人为我做整个项目。我只需要一些关于如何在我的 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 文件的预览/伪代码,以便像我的 pyside 代码一样覆盖 QLabel 的绘制事件,作为额外的奖励。
【问题讨论】:
-
您是在问如何在 Qt creator 中创建一个新项目吗?第一个问题完全不清楚。
-
我几乎准备好了示例代码。给我一点时间来完成并测试它。
-
@Jaa-c 我在问如何在我当前的项目中创建一个子文件夹,其中子文件夹包含 pri 文件以及标题和源文件夹。
-
@JokerMartini 我以为你的问题是“在 Qt Creator 中创建 QLabel 的子类”
-
您的问题与您提供的代码无关,这造成了混乱。请澄清您的要求(可能通过删除任何不相关的内容)。具体来说,您有一些信息、一个代码示例,然后是一个不相关的问题。