gpt4 book ai didi

c++ - Qt:带有可移动小部件的窗口

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:57:12 26 4
gpt4 key购买 nike

我想创建一个窗口,其中包含可变数量的自定义小部件,每个小部件都可以是一组简单的对象。小部件的行为应该类似于对话框窗口:它们可以移动到父窗口内的任何位置,可以重叠等。但是,它们不能移出窗口。用 QT3 实现这样的东西最合适的方法是什么?我尝试创建以主窗口为父窗口的窗口/对话框,但这样可以将小部件移出窗口。

最佳答案

您可以使用拖放功能。这是我唯一能想到的。

Qt 附带了一个名为 Fridge Magnets 的示例。基本上,他们创建了一个名为 DragWidget 的类,它是所有其他小部件的宿主。在示例中,他们创建了一系列带有单词的 QLabel,用户可以拖动这些单词来创建句子。

主要工作是实现以下功能。

void dragEnterEvent(QDragEnterEvent *event);
void dragMoveEvent(QDragMoveEvent *event);
void dropEvent(QDropEvent *event);
void mousePressEvent(QMouseEvent *event);

这个例子是用Qt4引入的,但应该能给你思路,代码是here

基本上,当按下鼠标时,鼠标下的控件被隐藏,并且图像被放置在拖动数据中。当用户将它放在控件中的某处时,该示例将关闭先前位置的那个并创建一个新的 QLabel 并将其放在用户放置的位置。您可能应该将其更改为仅将控件移动到该位置。

该示例使用了一些与 3.3 中可用的概念略有不同的概念,因此 here是来自 3.3 的拖放示例

主要问题是当用户四处拖动时显示什么。在第一个示例中,他们使用了一个很好的技巧来构建标签的图像,因此看起来就像用户在四处拖动小部件一样。

显然,在 Qt4 中使用 MDI 功能会容易得多,但如果那不是一个选项,这是我唯一能想到的。

希望对您有所帮助。

关于c++ - Qt:带有可移动小部件的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8067896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com