У меня есть несколько изображений .jpg в папке, которые должны отображаться в QtListWidget. Я могу отобразить список элементов в определенной папке в QtListWidget, но не могу открыть элемент, когда я щелкаю по нему. Я узнал в уроке, что для этого нужно использовать «соединение», я пробовал, но происходит ошибка.
Мой код в .cpp файле выглядит следующим образом. Любая помощь приветствуется …
QDir myPath("/home/mit/Desktop/Ui_dev_mits_cars/visual_image");
myPath.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
myList = myPath.entryList();
ui->listWidget1->addItems(myList);
Правильно, поэтому проблема, по крайней мере, состоит из двух частей с вашим кодом:
connect(MyList,SIGNAL(doubleClicked(QListWidgetItem *)),this,SLOT(test(QListWidgetItem *)));
Прежде всего, вы пытаетесь использовать QStringList
основанный на значении объект, а не указатель. Кроме того, вы должны использовать указатель, указывающий на QListWidget
пример.
Во-вторых, вы используете сигнал неправильно. Это параметр является QModelIndex
в отличие от QListWidgetItem
, Подробности смотрите в документации:
void QAbstractItemView :: doubleClicked (const QModelIndex & индекс) [сигнал]
Этот сигнал испускается при двойном нажатии кнопки мыши. Элемент, по которому дважды щелкнули мышью, указан по индексу. Сигнал испускается только тогда, когда индекс действителен.
Итак, возьмите модельный индекс и в свой слот, извлеките данные из этого модельного индекса либо с помощью внутреннего указателя, либо, предпочтительно, data()
метод.
Других решений пока нет …