LINUX.ORG.RU

Принцип построения Qt программ.


0

0

Я только учусь, поэтому прошу отнестись с пониманием.

#include "ui_mainform.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication app(argc, argv); QDialog *window = new QDialog; Ui::Mainform ui; ui.setupUi(window);

window->show(); return app.exec(); }

Так реализую вызов интерфейса. Qt4.3.0. windows.

Вот как реализовывать вызов функционала, которые не связан с интерфейсом.

Например, как нажали кнопку - делается то-то..

Я бы действовал так. Создаю класс, который управляет всем моим функционалом в нём слот. С нажатой кнопки шлю сигнал на слот класса и происходит выполнение моего функционала. Но как послать с кнопки не стандартный сигнал??? В дизайнере форм этого как я понял сделать нельзя. В заголовочный после uic лазять нельзя. Всё равно при изменении формы всё сотрется.

Вот как быть?

anonymous

А что вы имеете ввиду под нестандартным сигналом? Сигналы-то с тех же кнопок идут стандартные, а вот обрабатывать их можно уже как угодно.

anonymous
()
Ответ на: комментарий от anonymous

Ок. А как связать стандартный сигнал с нестандартным слотом в дизайнере. Или как это делается? Ведь все коннекты в заголовочном файле после uic'а.

anonymous
()
Ответ на: комментарий от anonymous

> А как связать стандартный сигнал с нестандартным слотом в дизайнере. Или как это делается?
В дизайнере нельзя.
Только в коде реализации класса.

UVV ★★★★★
()
Ответ на: комментарий от UVV

#ifndef MAINFORM_H
#define MAINFORM_H

#include <QDialog>
#include "ui_mainform.h"

class MainForm: public QDialog, private Ui::MainForm
{
    public:
        MainForm(QWidget *parent = 0);

    private slots:
        void onButton1Clicked();
};

#endif // MAINFORM_H

--------

#include "mainform.h"
#include <QMessageBox>

MainForm::MainForm(QWidget *parent)
    : QDialog(parent)
{
    setupUi(this);

    connect(button1, SIGNAL(clicked()), SLOT(onButton1Clicked()));
}

void MainForm::onButton1Clicked()
{
    QMessageBox::information(this, tr("Information"), tr("button1 clicked"));
}

--------

#include <QApplication>
#include "mainform.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainForm form;
    form.show();
    return app.exec();
}

Deleted
()
Ответ на: комментарий от Deleted

А ещё есть такая программа, как assistant

UVV ★★★★★
()
Ответ на: комментарий от Deleted

connect не нужен.

#ifndef MAINFORM_H
#define MAINFORM_H

#include <QDialog>
#include "ui_mainform.h"

class MainForm: public QDialog, private Ui::MainForm
{
    public:
        MainForm(QWidget *parent = 0);

    private slots:
        void on_button1_clicked();
};

#endif // MAINFORM_H

--------

#include "mainform.h"
#include <QMessageBox>

MainForm::MainForm(QWidget *parent)
    : QDialog(parent)
{
    setupUi(this);
}

void MainForm::on_button1_clicked()
{
    QMessageBox::information(this, tr("Information"), tr("button1 clicked"));
}

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.