Как в консольном получить - ясно.
А вот как, тоже самое, сделать в обычном Qt GUI проекте?
main.cpp
#include <QtGui/QApplication>
#include "mygui.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
qDebug()<<a.arguments();
w.args.append(a.arguments());
w.show();
return a.exec();
}
Все выводится нормально.MainWindow *w = new MainWindow(this,a.arguments());
Но мне сразу выдает:В MainWindow - сделать public функцию, которая получает то - что выдаёт a.arguments()
и сохраняет это в каком-то контейнере у себя в присат секции, тогда:
QApplication a(argc, argv);
MainWindow w;
w.получить_аргументы(a.arguments() );
w.show();
и далее по тексту...
QCoreApplication::arguments();
Создавал public QString, и в него передавал как писал Sergey B., но возвращало пустоту...
wiz29, спасибо! Работает. Я знал, что есть способ по проще.
MainWindow(QWidget *parent = 0);
наMainWindow(QWidget *parent = 0, const QString &);
Что бы через него передавать аргументы.RazrFalcon, this в данном случае не определён, так как main не является нестатической функцией-членом некоего класса/структуры
кроме того, в конструктор MainWindow тебе нужно передать указатель на объект, произведённый от QWidget. Если такого объекта нет, то передавай 0
Это как? Можно пример?
пример чего ?
А по сабжу - просто передай через конструктор главного окна аргументы int argc, char *argv[] и дальше разбирай их как обычно
Мне нужен пример(маленький) кода, чтобы понять как это работает.
Уже вроде как обсуждался разбор аргументов с пару месяцев назад.. Точно помню)) А вообще есть мега-тулза - getopts - разберет на ура, и париться не нужно. Можешь посмотреть ее исходники, они открыты.
Да нет же!
Распарсить аргументы - не проблема.
Я не пойму как из передать в другой класс, по сути.
Вот пример, который я находил:
main.cpp
int main(int argc, char **argv[])
{
...
QApplication app(argc, argv);
MainWindow *mainWin = new MainWindow(app.arguments());
...
}
MainWindow::MainWindow(const QStringList &args)
{
...
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(const QStringList &);
...
}
MainWindow(QWidget *parent = 0);
Нужно добавить, я так понимаю const QStringList &args), но тогда оно ругается на this. О чем я писал выше.
"Что такое this?" обсуждаем http://www.forum.crossplatform.ru/index.php?showtopic=6917
Стандартный конструктор класса-наследника от QMainWindow
MyClass(QWidget *pParent = 0, Qt::WFlags flags = 0);
MyClass(QStringList sArgs, QWidget *pParent = 0, Qt::WFlags flags = 0);
MyClass obj(app.arguments());
obj....
Сделал по аналогии:
mainwindow.h
public:
MainWindow(QStringList args,QWidget *parent = 0);
mainwindow.cppMainWindow::MainWindow(QStringList args, QWidget *parent) :
QMainWindow(parent)
{
setupUi(this);
qDebug()<<"my"<<args;
...
}
main.cppMainWindow w(a.arguments());
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)