QT界面拉伸距离自定义

  • 遇到的问题:QDockWidget在浮动状态,边框不好选中
  • 出现原因: Qt 源码中的默认大小为4,当QDockWidget存在子界面的时候,子界面的mousemove没触发 选中
  • 解决方案: 通过windos信号判断鼠标的位置,在确定击中边框
#define SPACE_LENTH 10
bool DockWidget::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
	MSG* winMsg = static_cast<MSG *>(message);
	HWND hWnd = winMsg->hwnd;
	switch (winMsg->message)
	{
	case WM_NCHITTEST:
	{
		if (this->isFloating())
		{
			int xPos = GET_X_LPARAM(winMsg->lParam) - this->frameGeometry().x();
			int yPos = GET_Y_LPARAM(winMsg->lParam) - this->frameGeometry().y();

			if (xPos >= 0 && xPos < SPACE_LENTH)//左边界
			{
				*result = HTLEFT;
				return true;
			}
			else if (xPos > (this->width() - SPACE_LENTH)) //右边界
			{
				*result = HTRIGHT;
				return true;
			}
			else if (yPos >= 0 && yPos < SPACE_LENTH)// 上
			{
				*result = HTTOP;
				return true;
			}
			else if (yPos > (this->height() - SPACE_LENTH))// 下
			{
				*result = HTBOTTOM;
				return true;
			}
			break;
		}
	}
	}

	return QDockWidget::nativeEvent(eventType, message, result);
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt Creator 是一个非常强大的 Qt 开发工具,它提供了丰富的可视化界面设计工具,可以帮助开发者快速创建自定义界面。 下面是一些编写自定义界面的建议: 1. 使用 Qt Designer:Qt Designer 是一个 Qt 工具,它可以让你使用可视化界面设计工具创建自定义界面。你可以使用它来拖拽和放置控件,设置属性和信号槽,然后将其导出为 UI 文件,再在代码中使用 QUiLoader 类加载 UI 文件并创建界面。 2. 使用布局管理器:布局管理器可以帮助你轻松地管理界面上的控件位置和大小。Qt Creator 提供了许多布局管理器,例如 QHBoxLayout、QVBoxLayout、QGridLayout 等。你可以根据需要选择不同的布局管理器来布局你的控件。 3. 自定义控件:如果你需要更加个性化的控件,可以创建自定义控件。Qt Creator 提供了一个自定义控件模板,可以帮助你快速创建自定义控件。你可以在自定义控件中添加自己的属性和信号槽,以及重写绘图函数来实现自己的界面效果。 4. 使用样式表:样式表是一种用于设置控件外观的方法。你可以使用样式表来设置控件的颜色、字体、边框等属性,从而实现自己的界面效果。Qt Creator 提供了一个样式表编辑器,可以帮助你创建和编辑样式表。 5. 使用 QML:如果你需要创建更加丰富和复杂的界面,可以考虑使用 QML。QML 是一种基于 JavaScript 的声明式语言,可以帮助你创建动态和交互式的用户界面Qt Creator 提供了一个 QML 设计器,可以帮助你使用可视化工具创建 QML 界面。 总之,Qt Creator 提供了许多工具和技术来帮助你创建自定义界面。你可以根据需要选择不同的方法和工具,以便快速和方便地创建自己的界面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值