2015-11-20 6 views
1

Я создал 2 простых тестовых приложения Qt5.5 на Linux, «красный» и «зеленый». Я установка начальная мягкая ссылка в текущем каталоге, который выглядит следующим образом:Qt5 Изменение Softlink текущего исполняемого исполняемого файла

gui -> red 

Я хочу, чтобы иметь возможность запускать графический интерфейс приложения в любое время и иметь его переключить мягкую ссылке на другое «цвет» приложение. Поэтому, когда я запускаю gui, и он указывает на красный, в следующий раз, когда я запустил gui, он будет указывать на зеленый.

Красный приложение код, чтобы сделать это выглядит следующим образом:

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent) 
{ 
    // Get the current path 
    QString cwd = QDir::currentPath(); 
    qDebug() << cwd + "/green"; 
    bool success = QFile::link(cwd + "/green",cwd + "/gui"); 
    qDebug() << "Was successful: " << success; 
} 

зеленый код приложения, чтобы сделать это выглядит следующим образом:

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent) 
{ 
    // Get the current path 
    QString cwd = QDir::currentPath(); 
    qDebug() << cwd + "/red"; 
    bool success = QFile::link(cwd + "/red",cwd + "/gui"); 
    qDebug() << "Was successful: " << success; 
} 

Проблема заключается в том, что «успех» булево всегда выходит из строя. Думаю, я не могу изменить мягкую ссылку текущего процесса. Как я могу это достичь?

ответ

1

Попробуйте удалить ссылку, прежде чем ее воссоздания:

Эта функция не будет перезаписывать уже существующий объект в файловой системе; в этом случае ссылка() вернет false и установит ошибку() на return RenameError.

QFile::link().

+0

работ - спасибо – PhilBot