3

I want to create a window with a variable number of custom widgets, each of the widgets can be a group of some simple objects. Widgets should behave similar to dialog windows: they can be moved anywhere inside the parent window, can overlap etc. However, they can't be moved out of the window. What would be the most appropriate way to implement something like this with QT3? I tried creating windows/dialogs with the main window as parent, but this way the widgets can be moved out of the window.

4

1 回答 1

2

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

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

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

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

这个例子是用 Qt4 介绍的,但它应该给你的想法,代码在这里

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

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

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

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

希望有帮助。

于 2011-11-09T21:32:52.800 回答