[Qt] OpenGL i UI
Ostatnio zmodyfikowano 2011-03-16 16:03
Łukasz123 Temat założony przez niniejszego użytkownika |
[Qt] OpenGL i UI » 2011-03-16 12:19:26 Witam, mam znów jakiś pewnie głupi problem tylko tym razem z Qt :P Otóż jak w temacie próbowałem połączyć UI(tj. okno z kontrolkami stworzone w Qt Designe'rze). O oto co narazie mi wyszło: MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow> #include <QApplication> #include <QTextCodec> #include <QPushButton> #include "glwidget.h" namespace Ui { class MainWindow; } class MainWindow : public QWidget , QMainWindow { Q_OBJECT public: explicit MainWindow( QWidget * parent = 0 ); ~MainWindow(); private: Ui::MainWindow * ui; GLWidget * glScene; };
#endif
MainWindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QHBoxLayout> MainWindow::MainWindow( QWidget * parent ) : ui( new Ui::MainWindow ) , QMainWindow( parent ) { ui->setupUi( this ); glScene = new GLWidget; QHBoxLayout * mainLayout = new QHBoxLayout; mainLayout->addWidget( glScene ); setLayout( mainLayout ); }
MainWindow::~MainWindow() { delete ui; }
main.cpp #include <QtGui/QApplication> #include "mainwindow.h" int main( int argc, char * argv[] ) { QApplication a( argc, argv ); MainWindow w; w.show(); return a.exec(); }
Błędy: requestet for member 'show' is ambiguous candidates are : void QWidget::show void QWidget::Show Z góry dzięki ! |
|
DejaVu |
» 2011-03-16 13:10:03 Duże małe litery w nazwach metod - może to ma znaczenie? |
|
Łukasz123 Temat założony przez niniejszego użytkownika |
» 2011-03-16 13:16:35 Po zamianie show na Show jest undef.A po jego usunięciu to jest znowu to że, jest dwuznaczne w SetupUI. |
|
DejaVu |
» 2011-03-16 14:04:17 A czy przypadkiem klasy QWidget oraz QMainWindow nie posiadają metod Show? Jeżeli tak to skąd kompilator ma wiedzieć o której wywołanie Ci chodziło?
/edit:
Tu masz analogiczny przypadek:
struct D1 { void operator delete( void * p ) throw() { } };
struct D2 { void operator delete( void * p ) throw() { } };
class MD : public D1 , public D2 { };
int mymain() { MD * p = new MD; return 0; }
Przykład ze strony: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20041
Rozwiązaniem tego jest zdefiniowanie metody wewnątrz klasy MD i określenie w niej co powinno zostać wywołane. |
|
Łukasz123 Temat założony przez niniejszego użytkownika |
» 2011-03-16 14:25:19 O dzięki,to chyba to,teraz nie mam pojęcia jak określić z której klasy metoda ma być wywołana (: Jak się odwołać do takiej klasy? |
|
DejaVu |
» 2011-03-16 16:03:41 Napisz w swojej klasie:
void TwojaKlasa::Show() { KlasaBazowa1::Show(); KlasaBazowa2::Show(); } |
|
« 1 » |