Использование Qt Creator (с Qwt), действительно простой материал - PullRequest
3 голосов
/ 06 января 2011

Я пытаюсь создать программу Qt, используя Qt Creator и Qwt для построения графиков. Я никогда не использовал Qt Creator раньше. Я создал MainWindow и добавил туда виджет Qwtplot (имя объекта: qwtPlot). Виджет появляется в программе, когда я компилирую и запускаю его. Но нигде в (автоматически сгенерированном) коде не упоминается объект qwtPlot, поэтому я предполагаю, что он добавляется во время компиляции из XML-файла .ui (или чего-то еще).

У меня вопрос такой ... как мне изменить / изменить объект qwtPlot? Или где я должен разместить код?

Мне трудно сформулировать свой вопрос, но в основном вопрос "Как мне сделать что-нибудь с виджетом qwtPlot, который создается (графически) с помощью Qtcreator?" Я проверил некоторые уроки, но в уроках они добавляют виджеты вручную в код, но я бы хотел использовать Qt Creator (потому что мой пользовательский интерфейс будет довольно сложным). Весь этот Qt Creator довольно запутанный ...

1 Ответ

4 голосов
/ 06 января 2011

Типичное решение - использовать множественное наследование или содержать компонент пользовательского интерфейса в качестве частного члена.Qt объясняет процесс на их веб-сайте:

Использование файла пользовательского интерфейса Designer в вашем приложении

Для главного окна большая часть этого автоматически генерируется для вас (в моей версии, по крайней мере ... 2.0.1)

Вы должны иметь (или создать) файл mainwindow.h, содержащий член типа Ui::MainWindow.

class MainWindow : public QMainWindow
{
  Q_OBJECT

public:
  explicit MainWindow(QWidget *parent = 0);
  ~MainWindow();

private:
  Ui::MainWindow *ui;
};

Ваш mainwindow.cpp должен правильно инициализировать его, а затем вы можете получить автоматически сгенерированные члены через частного ui члена.

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow) {
    ui->setupUi(this);
    ui->myControl->setProperty(...);
}

MainWindow::~MainWindow() {
    delete ui;
}

Если вы используете метод множественного наследования, вы можете получить доступ кнепосредственно члены.

...