0
我有我的Qt的應用程序有問題,我用QMainWindow中,並嘗試建立2 QComboBox像我一樣,對於其他部件的目標在setupUi實施崩潰:QMainWindow的崩潰時使用QComboBox
是我的班主窗口,它的工作完美並顯示,直到我說了2組合框。
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
MainWindow(Map *inMap, int dim1, int dim2);
~MainWindow();
public slots:
void boutonClicked();
private:
Ui::MainWindow *_ui;
QPushButton *_bouton;
Canvas *_canvas;
QComboBox *_boxDim1;
QComboBox *_boxDim2;
};
加入組合框後,程序崩潰到製造商的性能:
MainWindow::MainWindow(Map *inMap, int dim1, int dim2)
{
_ui->setupUi(this);
_boxDim1 = new QComboBox();
_boxDim2 = new QComboBox();
_canvas = new Canvas(inMap, dim1, dim2);
_bouton = new QPushButton("Test !");
_bouton->setToolTip("Bouton a push");
_bouton->setCursor(Qt::PointingHandCursor);
connect(_bouton, SIGNAL(clicked()), this, SLOT(boutonClicked()));
QWidget *q = new QWidget();
setCentralWidget(q);
QGridLayout *mainLayout = new QGridLayout();
mainLayout->addWidget(_canvas, 1, 0, 1, 1);
mainLayout->addWidget(_bouton, 2, 0, 1, 1);
q->setLayout(mainLayout);
}
在DDD調試之後,段錯誤的確切點是:
_ui->setupUi(this);
而這個函數中:
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objetName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(800, 600);
centralwidget = new QWidget(MainWindow) /// Segfault ici.
我必須承認,我不掌握在哪裏呢,因爲增加的問題,對他們來說完全建立QPushButton和Canvas的。
它的確沒有初始化_ui。令我驚訝的 是,它一直工作到有沒有這個初始化,很有可能是因爲項目沒有清洗。 – Woute