crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Получение аргументов в GUI приложении
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
RazrFalcon Дата 7.5.2011, 15:12
  Сделал по аналогии:
mainwindow.h
public:
  MainWindow(QStringList args,QWidget *parent = 0);
mainwindow.cpp
MainWindow::MainWindow(QStringList args, QWidget *parent) :
  QMainWindow(parent)
{
  setupUi(this);
  qDebug()<<"my"<<args;
  ...
}
main.cpp
MainWindow w(a.arguments());

Работает!!! :lol:

Цитата
Что мешает сделать его таким
незнание ;)
Rocky Дата 7.5.2011, 14:43
  Стандартный конструктор класса-наследника от QMainWindow
MyClass(QWidget *pParent = 0, Qt::WFlags flags = 0);

Что мешает сделать его таким:
MyClass(QStringList sArgs, QWidget *pParent = 0, Qt::WFlags flags = 0);

И создавать класс так
MyClass obj(app.arguments());
obj....

???
RazrFalcon Дата 7.5.2011, 14:08
 
Цитата(Litkevich Yuriy @ 7.5.2011, 13:23) *
в качестве аргумента функции (например, конструктора класса)

Так как это будет выглядеть?
То что я выше написал - не работает.
Litkevich Yuriy Дата 7.5.2011, 13:23
  "Что такое this?" обсуждаем здесь

Цитата(RazrFalcon @ 7.5.2011, 10:36) *
Я не пойму как из передать в другой класс, по сути.
в качестве аргумента функции (например, конструктора класса)
RazrFalcon Дата 7.5.2011, 7:36
  Да нет же!
Распарсить аргументы - не проблема.
Я не пойму как из передать в другой класс, по сути.

Вот пример, который я находил:
main.cpp
int main(int argc, char **argv[])
{
...
QApplication app(argc, argv);
MainWindow *mainWin = new MainWindow(app.arguments());
...
}

mainwindow.cpp
MainWindow::MainWindow(const QStringList &args)
{
...
}

mainwidow.h
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(const QStringList &);
...
}

Но у меня так не вышло, так как изначально:
MainWindow(QWidget *parent = 0);
Нужно добавить, я так понимаю const QStringList &args), но тогда оно ругается на this. О чем я писал выше.
Rocky Дата 6.5.2011, 19:58
  Уже вроде как обсуждался разбор аргументов с пару месяцев назад.. Точно помню)) А вообще есть мега-тулза - getopts - разберет на ура, и париться не нужно. Можешь посмотреть ее исходники, они открыты.
RazrFalcon Дата 6.5.2011, 19:52
  Мне нужен пример(маленький) кода, чтобы понять как это работает.
Алексей1153 Дата 6.5.2011, 19:44
  пример чего ?

А по сабжу - просто передай через конструктор главного окна аргументы int argc, char *argv[] и дальше разбирай их как обычно
RazrFalcon Дата 6.5.2011, 19:34
  Это как? Можно пример?
Алексей1153 Дата 6.5.2011, 19:26
  RazrFalcon, this в данном случае не определён, так как main не является нестатической функцией-членом некоего класса/структуры

кроме того, в конструктор MainWindow тебе нужно передать указатель на объект, произведённый от QWidget. Если такого объекта нет, то передавай 0
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 17:09