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);}

代码解释:

  1. 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像素。 如果您发现实际大小不符合预期,可能是以下原因导致的:

  1. 父窗口布局: 如果DraggableWidget被放置在父窗口的布局管理器中(例如QVBoxLayoutQHBoxLayout),布局管理器可能会调整其大小。 * 解决方法: 在父窗口的布局管理器中设置DraggableWidget的大小策略,或者使用setGeometry()函数直接设置位置和大小。

  2. 样式表: 全局样式表或特定于DraggableWidget的样式表中的某些设置可能会影响大小。 * 解决方法: 检查样式表,确保没有与setFixedSize()冲突的设置。可以使用 setStyleSheet('background-color: lightred; min-width: 60px; min-height: 60px;'); 来设置最小宽度和高度。

  3. 其他代码: 检查构造函数之外的代码,确保没有其他地方修改了DraggableWidget的大小。

通过排除以上问题,您应该能够成功创建一个大小为60x60像素的可拖拽DraggableWidget。 如果问题仍然存在,请仔细检查代码并调试相关部分。

Qt自定义可拖拽QWidget: DraggableWidget详解

原文地址: https://www.cveoy.top/t/topic/ki4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录