2011-01-06 7 views
3

Ich versuche, ein Qt-Programm mit Qt Creator und Qwt zum Plotten zu machen. Ich habe Qt Creator noch nie zuvor benutzt. Ich habe ein MainWindow erstellt und dort ein Qwtplot-Widget hinzugefügt (Objektname: qwtPlot). Das Widget wird im Programm angezeigt, wenn ich es kompiliere und ausführe. Aber das qwtPlot-Objekt wird nirgendwo im (automatisch generierten) Code erwähnt, daher nehme ich an, dass es zur Kompilierzeit aus der .ui-xml-Datei (oder so etwas) hinzugefügt wird.Mit Qt Creator (mit Qwt), wirklich grundlegende Sachen

Meine Frage ist, dass ... wie ändere/ändere ich das qwtPlot-Objekt? Oder wo sollte ich den Code platzieren?

Ich habe eine harte Zeit artikulieren meine Frage, aber die Frage ist im Grunde "Wie mache ich irgendetwas mit dem qwtPlot Widget, das (grafisch) mit Qtcreator erstellt wird?". Ich habe einige Tutorials überprüft, aber in den Tutorials fügen sie die Widgets manuell in den Code ein, aber ich möchte Qt Creator verwenden (weil meine Benutzeroberfläche ziemlich kompliziert ist). Dieser ganze Qt Creator ist ziemlich verwirrend ...

Antwort

4

Eine typische Lösung ist die Verwendung mehrerer Vererbung oder die UI-Komponente als ein privates Mitglied enthalten. Qt, den Prozess auf ihrer Website erklärt:

Using a Designer UI File in Your Application

Für ein Hauptfenster, das meiste davon ist automatisch generiert für Sie (auf meine Version, mindestens ... 2.0.1)

Sie sollten eine mainwindow.h Datei haben (oder erstellen), die ein Mitglied des Typs Ui::MainWindow enthält.

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

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

private: 
    Ui::MainWindow *ui; 
}; 

Ihre mainwindow.cpp sollte es richtig, initialisieren und dann können Sie den automatisch generierten Mitglieder durch den privaten ui Mitglied zu bekommen.

#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; 
} 

Wenn Sie die Mehrfachvererbungsmethode verwenden, können Sie direkt auf die Mitglieder zugreifen.

+0

Also im Grunde erstellen ich eine Klasse, die das qwtPlot-Objekt erbt und so kann ich das in meinem Hauptfenster eingebettete qwtPlot-Objekt verwenden? – Dago

+0

Qt sollte ein 'ui_mainwindow.h' (oder so ähnlich) in Ihrem Projekt erstellt haben. ** Das ** ist, was Sie erben. Sie haben dann Zugriff auf die Mitglieder von Ui :: MainWindow in Ihrer Klasse und können sie bei Bedarf bearbeiten. –

+0

JA das war genau was ich brauchte, danke! – Dago