如何去除只有10个widget能拖动到桌面的限制

在Vapp_hs_scr.cpp这支文件中,有定义s_maxDeskTopWidget = 10,可以修改这里,把这个最大值增大。但要注意的是,当同一时刻拖出到desktop上的widget较多时,可能会因为frame count或memory不足而导致assert,若assert,就需要适当调整Vfx_sys_config.h里的define值。 
在vfx_sys_config.h 这支文件中: 
VFX_SYS_MEM_VRT_BUF_SIZE 是由下列4个define 決定的, 可以由 memory monitor 的结果给予一个适当的值: 
1)VFX_SYS_MEM_VRT_MAX_FRAME_CNT  
2)VFX_SYS_MEM_VRT_MAX_TIMELINE_CNT  
3)VFX_SYS_MEM_VRT_MAX_DRAW_CMD_CNT  
4)VFX_SYS_MEM_VRT_MAX_DRAW_BUF_SIZE 
VFX_SYS_MEM_SCREEN_POOL_SIZE 及VFX_SYS_MEM_GLOBAL_POOL_SIZE 则是用memory monitor 的结果给予一个适当的size 即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++中,您可以使用QDrag、QMimeData和QDropEvent来实现将QDockWidget拖拽到另一个QWidget中的功能。 以下是示例代码: ```c++ #include <QApplication> #include <QMainWindow> #include <QWidget> #include <QDockWidget> #include <QDragEnterEvent> #include <QDropEvent> #include <QMimeData> class MyWidget : public QWidget { public: MyWidget(QWidget* parent = nullptr) : QWidget(parent) { // Enable drop events for this widget setAcceptDrops(true); } // Override dragEnterEvent to handle drag enter events void dragEnterEvent(QDragEnterEvent* event) override { // Accept event if it contains a QDockWidget if (event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) { event->acceptProposedAction(); } } // Override dropEvent to handle drop events void dropEvent(QDropEvent* event) override { // Get the data from the drop event QByteArray data = event->mimeData()->data("application/x-qabstractitemmodeldatalist"); // Create a QDataStream to read the data QDataStream stream(&data, QIODevice::ReadOnly); // Read the data until we find a QDockWidget while (!stream.atEnd()) { int row, col; QMap<int, QVariant> role_data; stream >> row >> col >> role_data; // Check if the role data contains a QDockWidget if (role_data.contains(Qt::UserRole) && role_data[Qt::UserRole].canConvert<QWidget*>()) { // Get the QDockWidget from the role data QWidget* widget = role_data[Qt::UserRole].value<QWidget*>(); // Create a new QDockWidget with the same properties as the original QDockWidget* dock_widget = new QDockWidget(widget->windowTitle(), this); dock_widget->setWidget(widget->parentWidget()); dock_widget->setFeatures(widget->parentWidget()->features()); dock_widget->setAllowedAreas(widget->parentWidget()->allowedAreas()); // Add the new QDockWidget to this widget addDockWidget(Qt::LeftDockWidgetArea, dock_widget); // Accept the drop event event->acceptProposedAction(); return; } } // Reject the drop event if no QDockWidget was found event->ignore(); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); // Create QMainWindow as an intermediary QMainWindow* main_window = new QMainWindow(); // Create MyWidget MyWidget* widget = new MyWidget(main_window); // Create QDockWidget and add it to QMainWindow QDockWidget* dock_widget = new QDockWidget("Dock Widget", main_window); dock_widget->setWidget(new QWidget(dock_widget)); main_window->addDockWidget(Qt::LeftDockWidgetArea, dock_widget); // Set MyWidget as the central widget of QMainWindow main_window->setCentralWidget(widget); // Show QMainWindow main_window->show(); return app.exec(); } ``` 在这个例子中,我们创建了一个名为MyWidget的QWidget子类,并将其设置为QMainWindow的中心窗口。我们启用了该widget的拖放事件,以便可以将QDockWidget拖拽到该widget中。 我们还重载了dragEnterEvent和dropEvent方法,以响应拖放事件。在dragEnterEvent中,我们检查拖动操作是否包含一个QDockWidget,并在包含时接受拖动事件。在dropEvent中,我们从QMimeData中读取数据,直到找到一个QDockWidget。然后,我们使用原始QDockWidget创建一个新的QDockWidget,并将其添加到MyWidget中。 请注意,我们使用了“application/x-qabstractitemmodeldatalist”格式来传输数据。这是因为QDockWidget没有默认的MIME类型。我们将QDockWidget作为Qt::UserRole存储在QMimeData中。 希望这可以帮助您实现将QDockWidget拖拽到另一个QWidget中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值