从 QListWidget Thumbnails 拖动项目后如何获取缩略图的项目索引?
How to get item index of a thumbnail after drag item from QListWidget Thumbnails?
我将在我的项目中使用拖放事件。所以,现在我的问题是,当我从 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();
}
}
任何帮助对我都非常有用。
提前谢谢你
您可以在 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;
}
}
我将在我的项目中使用拖放事件。所以,现在我的问题是,当我从 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();
}
}
任何帮助对我都非常有用。 提前谢谢你
您可以在 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;
}
}