GnomeDo的なランチャを作るとすれば、所謂スタートメニュー的なところからショートカットを集めてきて、そいつを
http://d.hatena.ne.jp/QtCoder/20110902/1315010586
を参考にして
// ExplorerやFinderでローカルパスを開く
QString path = QDesktopServices::storageLocation(QDesktopServices::DataLocation )
QUrl url = QUrl::fromLocalFile( path );
QDesktopServices::openUrl( url );
みたいな形でopenUrlに渡してやればショートカットのアプリケーションを起動できます。
ウィンドウズの場合は、
C:/ProgramData/Microsoft/Windows/Start Menu/Programs
の中に.lnkがあるようなので、とりあえずこのフォルダから.lnkをあつめて表示するだけの
サンプルをつくってみました。
以下ソースです
#include "widget.h" #include "ui_widget.h" #include <QDesktopServices> #include <QUrl> #include <QDir> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); const QString path = "C:/ProgramData/Microsoft/Windows/Start Menu/Programs"; QStringList lnks = lnkCollect(path); ui->listWidget->addItems(lnks); } QStringList Widget::lnkCollect(const QString &dirPath) const{ QDir dir(dirPath); QStringList ans; QStringList filter; filter += "*.lnk"; foreach(QString file, dir.entryList(filter, QDir::Files)) ans += dirPath + QDir::separator() + file; foreach(QString subDir, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) ans += lnkCollect(dirPath + QDir::separator() + subDir); return ans; }