Необходимо при выборе папки из QComboBox
, показать файлы .tif
из данной папки в listView
.
При запуске программы, загружаю доступные папки в указанной директории.
QDir path("/home/dev/test-project/");
QStringList files = path.entryList(QDir::Dirs);
ui->cB_Karte->addItems(files);
На данном скриншоте видны все файлы и папки, нужны только .tif
файлы без их расшерения.
Какой ивент нужно указать QComboBox
, чтобы при выборе он показывал файлы .tif
в listView
?
При нажатии на файл в listView
- как выполнить другую функцию?
Использовать можно и не ListView
.
В данный момент сделал следующие:
void MainWindow::on_cB_Karte_currentIndexChanged(const QString &arg1)
{
//TODO currentPath editieren
ui->treeView->clear();
folderPath = QDir::currentPath();
folderDir = QDir(folderPath);
QFileInfoList pngList = folderDir.entryInfoList(QStringList("*.tif"), QDir::Files | QDir::NoDotAndDotDot);
for(const auto &item : pngList){
ui->treeView->addItem(item.fileName());
}
}
При выполнении кода выше, не добавляется новый файл с выбраной папки.
Проще всего использовать QFileSystemModel.
class Widget: public QWidget {
Q_OBJECT
QComboBox *cb;
QListView *list;
QFileInfoList paths;
QFileSystemModel *fs;
public:
explicit Widget (QWidget *parent);
public slots:
void changeModelIndex(int index);
// ...
};
// ...
Widget::Widget (QWidget *parent): QWidget(parent) {
// ...
cb = new QComboBox (this);
QDir path("/home/dev/test-project/");
paths = path.entryInfoList(QDir::Dirs);
cb = new QComboBox (this);
for (const auto& fi:paths) {
cb->addItem (fi.fileName());
}
connect (cb, SIGNAL(currentIndexChanged(int)), this, SLOT(changeModelIndex(int));
fs = new QFileSystemModel (this);
fs->setNameFilters({"*.tiff"});
fs->setFilters(QDir::Files);
list = new QListView (this);
list->setModel (fs);
// ...
}
void Widget::changeModelIndex(int index) {
fs->setRootDirectory (paths[index]);
}
Пример собран наспех и может содержать ошибки, но показаны все основные моменты.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
В Qt 48 вызываю функцию getwindowtext, которая во второй параметр выдает заголовок окна
Здравствуйте! Нужна помощь в реализации данного задания, желательно с объяснением, тк
Имеется сервер с UbuntuНа нем установлена PostgreSQL