Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Niels Bohr
16 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 10
#1

QCommandLineParser передача значений в виджет

11.01.2017, 08:47. Просмотров 718. Ответов 3
Метки нет (Все метки)

Добрый день!

Заранее извиняюсь, если глупый вопрос, я в некотором роде новичок. Я использую QCommandLineParser для считывания параметров запуска приложения с коммандной строки. Все работает (спасибо шикарной доке), но лишь для консольного приложения. А как мне передать значения в экземпляр QWidget или QMainWindow? Число параметров у меня достаточно большое, и не все обязательные. Первое что на ум приходит - создать конструктор виджета с дефолтными значениями, но может быть существует еще какой-нибудь способ? Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2017, 08:47
Ответы с готовыми решениями:

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

Передача ссылки на функцию класса Виджет в другой класс
Будет ли работать если передать ссылку на функцию от класса Виджет в класс...

Передача значений виджетов
Доброго времени суток. Нужно при нажатии на кнопку склеенное значение из...

Передача значений переменным из lineedit
Здравствуйте! коротко опишу проблему : Написал код для консольной программы...

Передача значений из формы в форму
Подскажите как сделать правильно. Есть две формы. На первой форме две кнопки:...

3
Wyn
1056 / 638 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
11.01.2017, 09:39 #2
Niels Bohr, насколько вас понял, если у вас много параметров, то лучше вынести их в отдельный класс/структуру. Там же можно прописать и значения параметров по умолчанию. И уже потом передавать такой объект в виджеты или куда вы там хотите.
Если некоторые изменяемые значения параметров могут между запусками сохранять своё изменённое значение, то смотрите в сторону QSettings.
0
Niels Bohr
16 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 10
11.01.2017, 15:04  [ТС] #3
Спасибо, но я поступил по другому: создал второй конструктор у виджета принимающий QStringList и в конструкторе виджета уже расположил QCommandLineParser.
Так как нигде в интернетах нет адекватного примера, привожу небольшой рабочий код, вдруг кому-то поможет:

widget.h:
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QDebug>
#include <QLabel>
#include <QVBoxLayout>
#include <QString>
 
#include <QCommandLineParser>
#include <QCommandLineOption>
 
 
class Widget : public QWidget
{
    Q_OBJECT
 
private:
    QLabel *param1;
    QLabel *param2;
 
    QVBoxLayout *layout;
 
public:
    explicit Widget(QStringList, QWidget *parent = 0);
    ~Widget();
};
 
#endif // WIDGET_H


widget.cpp:
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "widget.h"
 
Widget::Widget(QStringList arguments, QWidget *parent) : QWidget(parent)
{
    param1 = new QLabel("Param 1: ");
    param2 = new QLabel("Param 2: ");
 
    layout = new QVBoxLayout();
 
    layout->addWidget(param1);
    layout->addWidget(param2);
    setLayout(layout);
 
 
    qDebug() << arguments;
 
    QCommandLineParser parser;
 
    QCommandLineOption optParam1("param1", "description on param1", "param1name", "default param1 name");
    QCommandLineOption optParam2("param2", "description on param2", "param2name", "default param2 name");
 
    parser.addOption(optParam1);
    parser.addOption(optParam2);
 
    parser.parse(arguments);
 
    param1->setText(param1->text() + parser.value(optParam1));
    param2->setText(param2->text() + parser.value(optParam2));
 
}
 
Widget::~Widget()
{
 
}


main.cpp:
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include "widget.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w(a.arguments());
    w.show();
 
    return a.exec();
}
0
Maxim Prishchepa
Эксперт С++
1924 / 1036 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
11.01.2017, 16:17 #4
есть такая штука как:
arguments в QCoreApplication, статический метод, который содержит в себе все аргументы, его вы можете вызвать откуда угодно из приложения, ну и следовательно, в конструкторе своего виджета
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2017, 16:17

Передача значений переменных в Sql запрос
Здравствуйте. Объясните пожалуйста как мне передать значения переменной в...

Передача значений между mainWindow и GLWidget
Добрый день! Начал осваивать C++ и заодно Qt. Прошу подсказать, как связать...

Виджет KeySequenceEdit
Привет, хочу сделать глобальные хот-кеии обработку действий для них. Задавать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru