LINUX.ORG.RU

Qt: Как получить доступ к ui из другого класса?

 ,


0

1

Всем доброго времени суток. Похожая тема уже звучала, но я так и не нашел в ней ответа на главный вопрос. Ситуация такая: подключил библиотеку QCustomPlot через элемент QWidget, создал отдельный класс-наследник от QCustomPlot, соответственно. Теперь я хочу реализовать всю работу с этой библиотекой в этом классе, оставив в MainWindow только создание элемента объекта этого класса и один метод, который будет только отправлять массив данных в этот объект. Усё. Тут у меня начинается головоломка:

-нужно обращаться к элементу в форме через ui->, которого нет в моем классе, он там не наследован и по ссылке не передан, и никто его там не видел, и никто там его не узнает) как это сделать понятия не имею. Пробовал: множественное наследование и создание там отдельного объекта - не вышло. Не исключено, что в силу моих ошибок. Сделать метод в MainWindow, возвращающий ссылку на объект ui - не вышло, хотя, народ пишет, что это вполне возможно, но нет нигде кода, у кого бы это вышло. Сейчас все работает допотопно: я создаю объект моего класса в MainWindow, и дергаю там методы моего класса. А мне нужно реализовать все там. Возможно, я могу передавать эту ссылку как-то в конструктор при создании объекта, но я не ведаю , как это сделать. Помогите, люди добрые, кто чем может) Код привожу ниже:

Это .cpp моего класса

Charts::Charts(QWidget *parent) : QCustomPlot(parent)
{}


void Charts::setupgraph(QCustomPlot *customPlot)

{
    // set dark background gradient:
    QLinearGradient gradient(0, 0, 0, 400);
    gradient.setColorAt(0, QColor(90, 90, 90));
    gradient.setColorAt(0.38, QColor(105, 105, 105));
    gradient.setColorAt(1, QColor(70, 70, 70));

    customPlot->setBackground(QBrush(gradient));

и т.д.

это его .h

#include <QtCore/QDebug>
#include <qcustomplot.h>

class MainWindow;

class Charts : public QCustomPlot {
    Q_OBJECT

signals:
    void getData(const QByteArray &data);

public:
    explicit Charts(QWidget *parent = nullptr);

protected:
private slots:  

public:
    void setupgraph(QCustomPlot *customPlot);    

private:
    QCPGraph *graphic;          // Объявляем график

};

В MainWindow все в штатном режиме, как Qt прописал.

private:
     Ui::MainWindow *ui;

Заранее благодарен каждому, кто испытает малейшее желание оказать помощь



Последнее исправление: Tumyq (всего исправлений: 7)
Ответ на: комментарий от Tumyq

он выведет стандартную форму

В моём примере выводится красная метка вместо стандартной, а у тебя - стандартная форма.

Ты либо чего-то недоговариваешь, либо чего-то недопонимаешь.

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

QLabel - виджет, RedLabel - унаследованный от него виджет с установленными параметрами.

QCustomPlot - виджет, Charts - унаследованный от него виджет с установленными параметрами.

В чём разница?

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

разница в том, как подключались эти классы

А как подключались эти классы? И почему именно так?

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

А чем, собственно, Qt негож? Тем более, мне на Винде надо.

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