Форум программистов, компьютерный форум, киберфорум
Наши страницы

Qt

Войти
Регистрация
Восстановить пароль
 
Niels Bohr
16 / 0 / 0
Регистрация: 25.12.2016
Сообщений: 10
#1

QCommandLineParser передача значений в виджет - C++ Qt

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

Добрый день!

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

QCommandLineParser передача массива в приложение - C++ Qt
В общем, суть вопроса в названии темы, необходимо передать через параметр (допустим --arr) некий массив, содержащий QString. Итоговый...

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

Передача значений виджетов - C++ Qt
Доброго времени суток. Нужно при нажатии на кнопку склеенное значение из QLineEdit и QSlider поместить в список QListWidget под номером,...

Передача значений из формы в форму - C++ Qt
Подскажите как сделать правильно. Есть две формы. На первой форме две кнопки: "Генерация" и "Показать", на второй QWebView. В первой...

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

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

3
Wyn
1054 / 636 / 231
Регистрация: 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 / 74
Регистрация: 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
Привет! Вот еще темы с ответами:

Не перерисовывается виджет - C++ Qt
Решил попробовать вставить QGLWidget в форму. В форме через QtDesigner вставил объект QWidget, который преобразовал к объекту созданного...

Окно виджет - C++ Qt
Здравствуйте, у меня такой воnрос , читаю книгу Макса Шлее , тут есть тема nро размеры окна виджета ,так вот есть код ...

Виджет на виджете - C++ Qt
Доброго времени суток. Никак не могу мысль реализовать. Есть виджет, на котором есть QGraphicsView. Хочу сделать возможность...

Не создаётся виджет - C++ Qt
Сделал 3 из 4 виджетов, используемых в приложении, вместо 4-го пока использую пустой виджет, чтобы просто место занимал и видно было...


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

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

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