Hallo, ich experimentiere mit einer Qt-Bedienoberfläche (MainWindow) als Basisklasse von der mehrere Klassen mit unterschiedlichen Funktionaltäten ableitet werden sollen. Betriebssystem Ubuntu 14.04 Compiler GCC x86,32 bit Qt 5.3.0 GCC 32bit Fehlermeldungen:
1 | moc_mainwindow.cpp: In member function 'virtual const QMetaObject* MainWindow::metaObject() const': |
2 | moc_mainwindow.cpp:141:21: error: 'QObject' is an ambiguous base of 'MainWindow' |
3 | return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; |
4 | ^ |
5 | moc_mainwindow.cpp:141:50: error: 'QObject' is an ambiguous base of 'MainWindow' |
6 | return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; |
7 | ^ |
8 | moc_mainwindow.cpp:142:1: warning: control reaches end of non-void function [-Wreturn-type] |
9 | } |
10 | ^ |
11 | make: *** [moc_mainwindow.o] Error 1 |
12 | 16:51:30: Der Prozess "/usr/bin/make" wurde mit dem Rückgabewert 2 beendet. |
13 | Fehler beim Erstellen/Deployment des Projekts Stellwerk1_3 (Kit: Desktop Qt 5.3.0 GCC 32bit) |
14 | Bei der Ausführung von Schritt 'Make' |
15 | 16:51:30: Verstrichene Zeit: 00:01. |
Weiß jemand, woran das liegt? ------------------------- Anhang ---------------------- mainwindow.hpp:
1 | #include <QMainWindow> |
2 | #include <QObject> |
3 | #include <ftdi.hpp> |
4 | |
5 | namespace Ui { |
6 | class MainWindow; |
7 | }
|
8 | using namespace Ftdi; |
9 | |
10 | class abBus : QObject, public Context, public List{ |
11 | |
12 | Q_OBJECT
|
13 | |
14 | public:
|
15 | int vid; |
16 | int pid; |
17 | int baudrate; |
18 | int index; |
19 | int empfangen; |
20 | |
21 | int ret_flowctrl; |
22 | |
23 | public:
|
24 | abBus(); |
25 | ~abBus(); |
26 | |
27 | };
|
28 | |
29 | class MainWindow : public abBus, public QMainWindow |
30 | {
|
31 | Q_OBJECT
|
32 | |
33 | public:
|
34 | explicit MainWindow(QWidget *parent = 0); |
35 | ~MainWindow(); |
36 | |
37 | |
38 | private:
|
39 | Ui::MainWindow *ui; |
40 | };
|
mainwindow.cpp:
1 | #include "mainwindow.h" |
2 | #include "ui_mainwindow.h" |
3 | |
4 | #include <stdio.h> |
5 | #include <iostream> // Streams cin, cout, cerr, clog |
6 | #include <iomanip> // Manipulatoren zur Formatierung der Ausgabe |
7 | #include <cstdlib> // definiert die Makros, die traditionsgemäß in der <stdlib.h> definiert sind |
8 | #include <cstring> // Microsoft-spezifische Zeichenfolgenklassen |
9 | |
10 | |
11 | using namespace Ftdi; |
12 | |
13 | MainWindow::MainWindow(QWidget *parent) : |
14 | QMainWindow(parent), |
15 | ui(new Ui::MainWindow) |
16 | {
|
17 | ui->setupUi(this); |
18 | empfangen=1; |
19 | |
20 | abBus* rail=new abBus; |
21 | |
22 | // Datenflusssteuerung durch RFR/CTS
|
23 | |
24 | printf("\nDatenflußsteuerung RTS_CTS einschalten: "); |
25 | rail->ret_flowctrl=set_flow_control(SIO_RTS_CTS_HS); |
26 | if (ret_flowctrl < 0) { |
27 | switch(ret_flowctrl){ |
28 | case -1: |
29 | printf("Flusskontrolle gescheitert"); |
30 | break; |
31 | |
32 | case -2: |
33 | printf("USB-Gerät nicht verfügbar"); |
34 | break; |
35 | }
|
36 | } else printf("Datenflußsteuerung RTS_CTS, i.O."); |
37 | |
38 | }
|
39 | |
40 | MainWindow::~MainWindow() |
41 | {
|
42 | delete ui; |
43 | }
|
main.cpp
1 | #include "mainwindow.h" |
2 | #include <QApplication> |
3 | |
4 | int main(int argc, char *argv[]) |
5 | {
|
6 | QApplication a(argc, argv); |
7 | MainWindow w; |
8 | w.show(); |
9 | |
10 | return a.exec(); |
11 | }
|