Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ogogon от Октябрь 13, 2021, 14:43



Название: Как правильно добавить параметр классу окна?
Отправлено: ogogon от Октябрь 13, 2021, 14:43
Коллеги, пожалуйста подскажите, как мне правильно сделать то, что я хочу. Я только разбираюсь с C++ и не до конца владею всеми деталями, всю жизнь писал на кернигановском C.

У меня есть класс, реализующий окно, которое служит формой для ввода информации. Затем эта информация вносится в базу данных. Код класса создан автоматически, программой Qt Creator.
Мне нужно, чтобы форма работала в двух режимах - первичного ввода новой записи и редактирования уже имеющейся.

Вот код класса.
dialogMyForm.cpp:
Код:
DialogMyForm::DialogMyForm(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::DialogMyForm)
{
...

dialogMyForm.h:
Код:
class DialogMyForm : public QDialog
{
    Q_OBJECT

public:
    explicit DialogMyForm(QWidget *parent = nullptr);
    ~DialogMyForm();
...

Вызывается этот класс из класса MainWindow, вот таким манером (MainWindow.cpp):
Код:
DialogMyFunc dialogMyFunc;
dialogMyFunc.setModal(true);
dialogMyFunc.exec();

Мне нужно, при вызове класса dialogMyFunc, передавать еще один параметр, например
Код:
QString recordName
Если переменная пуста, или равна NULL, то надо выводить "чистую" форму, а если содержит значение - выловить в базе соответствующую запись и вписать ее в поля формы.

Теперь вопрос - как мне правильно изменить код класса, чтобы появился еще один параметр и как для его передачи поменять код вызова.

Заранее признателен,
Ogogon.


Название: Re: Как правильно добавить параметр классу окна?
Отправлено: kambala от Октябрь 13, 2021, 15:19
добавить параметр в конструктор:
Код
C++ (Qt)
explicit DialogMyForm(const QString &recordName, QWidget *parent = nullptr);
и создавать объект как:
Код
C++ (Qt)
DialogMyFunc dialogMyFunc("some value"); // или переменную какую-то передать


Название: Re: Как правильно добавить параметр классу окна?
Отправлено: ogogon от Октябрь 17, 2021, 17:29
Благодарю! Правда, пришлось добавить еще в одном месте.
dialogMyForm.cpp:
Код:
DialogMyForm::DialogMyForm(const QString &recordName, QWidget *parent) :
    QDialog(parent),
    ui(new Ui::DialogMyForm)
{
...

Ogogon.