Portál AbcLinuxu, 12. května 2025 17:17

Dotaz: QFileDialog v Directory mode nezobrazuje soubory

10.4.2012 21:57 MadCatX
QFileDialog v Directory mode nezobrazuje soubory
Přečteno: 324×
Odpovědět | Admin
Zdravím,

v programu potřebuji, aby uživatel zadal cestu k adresáři s JPEG soubory. Používám k tomu QFileDialog v Directory mode, zároveň bych ale chtěl, aby se zobrazily všechny JPEG soubory ve zvoleném adresáři. Zatím to řeším takhle:
void WelcomeWin::on_pb_browse_clicked()
{
    fdlg = new QFileDialog(this, QString(tr("Vyberte adresář s testovými obrázky")), QDir::currentPath());
    connect(fdlg, SIGNAL(fileSelected(const QString)), this, SLOT(on_fdlg_fileSelected(const QString)));

    /* We are setting a data directory, use Directory mode */
    fdlg->setFileMode(QFileDialog::Directory);
    fdlg->setOptions(QFileDialog::ReadOnly);
    fdlg->setNameFilter(QString("Soubory JPEG(*.jpg *.jpeg)"));
    fdlg->exec();
}
Sice to funguje, ale v QFileDialogu se zobrazují jen adresáře. Filtr je určitě v pořádku, v režimu AnyFile filtruje správně. Je zajímavé, že stejný program přeložený na Windows s Qt 4.7.4 funguje v pohodě, ale na Archu s Qt 4.8.1 se v režimu Directory zobrazují jen adresáře. Dělám něco špatně, nebo jsem trefil na bug v linuxové verzi file dialogu?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.4.2012 09:45 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
Rozbalit Rozbalit vše Re: QFileDialog v Directory mode nezobrazuje soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
4.8.x je dost podivná verze. To jen tak úvodem.

Vařím z hlavy, ale zkus použít: QString QFileDialog::getExistingDirectory ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), Options options = ShowDirsOnly ) [static]

je to obecně jednodušší. Tj.:

QString dirname = QFileDialog::getExistingDirectory(parent,
                                                    tr("Vyberte adresář s testovými obrázky"),
                                                    QDir::currentPath(),
                                                    QFileDialog::ReadOnly);

jestli to bude fungovat. Kdyžtak si pohraj s Options.
Kuolema Kaikille (Paitsi Meille).
11.4.2012 17:20 MadCatX
Rozbalit Rozbalit vše Re: QFileDialog v Directory mode nezobrazuje soubory

Vypadá to, že problém je vyřešen. Sice ne zcela k mé spokojenosti, nicméně jde nejspíš o problém v nativním file dialogu KDE. Na Windows i Ubuntu Oreinic (oboje s Qt 4.7.4) se použije filedialog z Qt, který funguje dle očekávání. Pokud použiju setOption(QFileDialog::DontUseNativeDialog), funguje to i v KDE.

Mohl byste někdo výše uvedený kód zkusit na mašině s KDE/Qt ve verzi nižší než 4.8.2, resp. 4.8.1? Zajímalo by mě, jestli jde o bug nebo jestli file dialog z KDE požadovanou vlastnost prostě neumí. Díky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.