【问题标题】:How to get item index of a thumbnail after drag item from QListWidget Thumbnails?从 QListWidget Thumbnails 拖动项目后如何获取缩略图的项目索引?
【发布时间】:2018-11-05 06:25:57
【问题描述】:

我将在我的项目中使用拖放事件。所以,现在我的问题是,当我从 QListWidget 拖动一个项目时,我想获取缩略图的索引。 我正在使用这个代码来拖放缩略图。

void QvtkOpenGLWidgetdrag::dragEnterEvent(QDragEnterEvent *event)
{
    QVTKOpenGLWidget::dragEnterEvent(event);
    event->accept();

}

void QvtkOpenGLWidgetdrag::dropEvent(QDropEvent *event)
{
    const QMimeData *mimeData = event->mimeData();
    int row;
    int col;

    if (mimeData->hasFormat("application/x-qabstractitemmodeldatalist")) {
        QByteArray encoded = mimeData->data("application/x-qabstractitemmodeldatalist");
        QDataStream stream(&encoded, QIODevice::ReadOnly);
        while (!stream.atEnd()) {
            QMap<int, QVariant> roleDataMap;
            stream >> row >> col >> roleDataMap ;
            QIcon icon = roleDataMap.value(1).value<QIcon>();
            m_pixmap = icon.pixmap(icon.availableSizes().first());
            update();
        }
        event->acceptProposedAction();
    }
    else {
        event->ignore();
    }
}

任何帮助对我来说都非常有用。 提前谢谢你

【问题讨论】:

  • 您正在拖入 Qlist?还是从列表中??
  • 我正在从 QListWidget 拖放到 QopenGLWidget 视图中
  • 这里是一个例子

标签: qt drag-and-drop qlistwidget


【解决方案1】:

您可以在 ListWidget 中调用 currentIndex() 方法,然后检查它是否有效,如果有效,则获取行值...(注意它们从 0 开始)

例子

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->listWidget->addItem("A");
    ui->listWidget->addItem("B");
    ui->listWidget->addItem("C");
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{

    auto index = ui->listWidget->currentIndex();
    if (index.isValid())
    {
       std::cout << "row: " << index.row() << std::endl;
    }
}

【讨论】:

  • 所有拖放事件函数都写在另一个类中(在draganddrop.cpp中),QListWidget对象在mainwindow.cpp类中可用。我正在从 dradanddrop.cpp 类中拖动项目,并且在该类中我需要该项目。
  • 然后使用/连接信号槽
  • 给我一些想法如何使用它,因为我将 dragandrop.cpp 中的所有功能都视为受保护的。
  • 我将在我想使用该项目的地方添加一些代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
  • 2014-08-17
  • 2020-06-18
  • 1970-01-01
  • 2017-03-01
  • 1970-01-01
相关资源
最近更新 更多