Использование QApplication с аргументами командной строки - PullRequest
1 голос
/ 22 сентября 2011
QApplication::QApplication ( int & argc, char ** argv )

Инициализирует оконную систему, а создает объект приложения. с аргументами командной строки argc в argv.

Предупреждение: данные, на которые ссылаются argc и argv, должны оставаться действительными для все время жизни объекта QApplication. Кроме того, argc должен быть больше нуля и argv должен содержать хотя бы один действительный символ строка.

По этой ссылке: http://doc.qt.io/qt-4.8/qapplication.html#QApplication

Какими могут быть аргументы в исполняемом файле? Есть примеры?

Я попытался указать что-то вроде:

anisha@linux-dopx:~/Desktop/notes/qt> make
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I../../../qtsdk-2010.05/qt/mkspecs/linux-g++-64 -I. -I../../../qtsdk-2010.05/qt/include/QtCore -I../../../qtsdk-2010.05/qt/include/QtGui -I../../../qtsdk-2010.05/qt/include -I. -I. -o widgets.o widgets.cpp
g++ -m64 -Wl,-O1 -Wl,-rpath,/home/anisha/qtsdk-2010.05/qt/lib -o qt widgets.o    -L/home/anisha/qtsdk-2010.05/qt/lib -lQtGui -L/home/anisha/qtsdk-2010.05/qt/lib -L/usr/X11R6/lib64 -lQtCore -lpthread 

anisha@linux-dopx:~/Desktop/notes/qt> ./qt 2 f g
anisha@linux-dopx:~/Desktop/notes/qt> 

Ничего особенного не произошло, и я не знал, что я делаю или что я должен был делать.

РЕДАКТИРОВАТЬ 1: Код, на котором я пытался ./qt -style=windows.

#include <QtGui>

 int main (int argc, char *argv[])
 {
    QApplication app (argc, argv);

    QWidget objQWidget;
    objQWidget.show                 ();     
    objQWidget.resize               (320, 240);     
    objQWidget.setWindowTitle ("Text to be shown on the title bar\n");

    // Adding a "child" widget.
    QPushButton *objQPushButton = new QPushButton ("Text to be shown on the button", &objQWidget);
    objQPushButton->move         (100, 100);
    objQPushButton->show         ();

    return app.exec                   ();
 }

Ответы [ 3 ]

4 голосов
/ 22 сентября 2011

Аргументы, переданные в конструкторе, позже доступны через статический метод
QStringList QCoreApplication::arguments(). Таким образом, аргументы командной строки могут обрабатываться везде в вашем коде.

4 голосов
/ 22 сентября 2011

Продолжайте читать эту документацию.Здесь указан список флагов, на которые действует QApplication.

Попробуйте, например:

./qt -style=windows

Аргументы, с которыми QApplication не имеет дело, просто остаются одни.Те, которые он обрабатывает, удаляются (вот почему эта функция принимает неконстантные аргументы).

1 голос
/ 10 октября 2013

Предложение по использованию QCoreApplication рекомендуется только при наличии консольного приложения. Если вы используете вместо этого QApplication и хотите получить доступ к аргументам командной строки из QWidget, вы можете сделать это с помощью глобального указателя qApp:

Здесь вы можете найти документацию от Nokia, или здесь от qt-project.org. В браузере документации Qt Creator я не смог его найти, так что в лучшем случае он не так легко доступен.

так что вы можете найти:

int my_argc = qApp-> arguments (). Count ();

QString my_argv_0 = qApp-> arguments.at (0);

...

и т. Д.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...