Qt自定义可拖拽QWidget: DraggableWidget详解
Qt自定义可拖拽QWidget: DraggableWidget详解
这篇文章将介绍如何使用Qt创建一个自定义的可拖拽QWidget,并命名为DraggableWidget。
构造函数解析:DraggableWidget::DraggableWidget(const QString& text, QWidget *parent)cppDraggableWidget::DraggableWidget(const QString& text, QWidget *parent) : QWidget{parent}{ setAcceptDrops(true); setFixedSize(60, 60); setStyleSheet('background-color: lightred;');
label = new QLabel(text, this); label->setAlignment(Qt::AlignCenter); void(DraggableWidget:: *carmovePos)(QPoint carPos) = &DraggableWidget::movePos; void(DraggableWidget:: *carmovetoPos)(QPoint carPos) = &DraggableWidget::movetoPos; connect(this, carmovePos, this, carmovetoPos);}
代码解释:
setAcceptDrops(true);:允许该QWidget接受拖放事件。2.setFixedSize(60, 60);:设置该QWidget的固定大小为60x60像素。3.setStyleSheet('background-color: lightred;');:设置背景颜色为浅红色。4. 创建一个QLabel用于显示文本,并设置其居中显示。5. 连接信号和槽,处理拖拽事件的逻辑(具体实现省略)。
问题:为什么我创建的DraggableWidget对象大小不是60*60?
根据代码,使用setFixedSize(60, 60)应该可以将DraggableWidget的大小设置为60x60像素。 如果您发现实际大小不符合预期,可能是以下原因导致的:
-
父窗口布局: 如果
DraggableWidget被放置在父窗口的布局管理器中(例如QVBoxLayout或QHBoxLayout),布局管理器可能会调整其大小。 * 解决方法: 在父窗口的布局管理器中设置DraggableWidget的大小策略,或者使用setGeometry()函数直接设置位置和大小。 -
样式表: 全局样式表或特定于
DraggableWidget的样式表中的某些设置可能会影响大小。 * 解决方法: 检查样式表,确保没有与setFixedSize()冲突的设置。可以使用setStyleSheet('background-color: lightred; min-width: 60px; min-height: 60px;');来设置最小宽度和高度。 -
其他代码: 检查构造函数之外的代码,确保没有其他地方修改了
DraggableWidget的大小。
通过排除以上问题,您应该能够成功创建一个大小为60x60像素的可拖拽DraggableWidget。 如果问题仍然存在,请仔细检查代码并调试相关部分。
原文地址: https://www.cveoy.top/t/topic/ki4 著作权归作者所有。请勿转载和采集!