将QApplication与命令行参数一起使用

时间:2011-09-22 11:52:10

标签: qt qt4

QApplication::QApplication ( int & argc, char ** argv )
  

初始化窗口系统,构造应用程序对象   使用argv中的argc命令行参数。

     

警告: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 个答案:

答案 0 :(得分:4)

继续阅读该文档。那里列出了QApplication行为标志的集合。

试着举例:

./qt -style=windows

QApplication没有处理的论点只是孤立无援。它处理的那些被删除(这就是为什么该函数采用非const参数)。

答案 1 :(得分:4)

稍后可以通过静态方法来访问构造函数中传递的参数 QStringList QCoreApplication::arguments()。这样,命令行参数可以在代码中的任何位置处理。

答案 2 :(得分:1)

有关使用QCoreApplication的建议仅建议您拥有控制台应用程序。如果您正在使用QApplication,并且想要从QWidget内部访问命令行参数,则可以使用全局指针qApp来执行此操作:

Here您可以从诺基亚找到文档,或者从qt-project.org找到here。在Qt Creator的文档浏览器中,我找不到它,所以它最多不容易访问。

所以你可以找到:

int my_argc = qApp-&gt; arguments()。count();

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

...

等等。

我知道这个问题已经过时了,但我花了一些时间在我的主窗口内找到一种方法,所以希望这有助于其他人。