Qt在mainwindow下代碼添加控件不能顯示的問題

以前在dialog或者widget下代碼添加控件能顯示,但是今天發現在mainwindow下居然不能顯示,後來查了資料才知道,需要先定義一個widget,具體代碼如下:

    QWidget *center = new QWidget(this);
    setCentralWidget(center);
    penColorComboBox = new QComboBox;
    createColorComboBox(penColorComboBox);
    penColorLabel = new QLabel(tr("pen color"));
    penColorLabel->setBuddy(penColorComboBox);

    penWidthspinbox = new QSpinBox;
    penWidthspinbox->setRange(0,20);
    penWidthspinbox->setSpecialValueText(tr("0 (cosmetic pen)"));

    penWidthLabel = new QLabel(tr("pen &width"));
    penWidthLabel->setBuddy(penWidthspinbox);

    createStyleComboBox();

    penStyleLabel = new QLabel(tr("&pen style"));
    penStyleLabel->setBuddy(penStyleComboBox);

    brushColorComboBox = new QComboBox();
    createColorComboBox(brushColorComboBox);

    brushColorLabel = new QLabel(tr("Brush Color"));
    brushColorLabel->setBuddy(brushColorComboBox);

    brushStyleComboBox = new QComboBox;
    brushStyleComboBox->addItem(tr("None"),Qt::NoBrush);


    brushStyleLabel = new QLabel(tr("&Brush Style"));
    brushStyleLabel->setBuddy(brushStyleComboBox);

    preLabel = new QLabel(this);

    connect(penColorComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(penchange()));
    connect(penWidthspinbox,SIGNAL(valueChanged(int)),this,SLOT(brushchange()));
    connect(penStyleComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(penchange()));
    connect(brushColorComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(brushchange()));
    connect(brushStyleComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(brushchange()));
    //connect(this,SIGNAL(penchange(QPen&)),;

    QGridLayout *mainlayout=new QGridLayout(center);
    mainlayout->addWidget(penColorLabel,0,0,Qt::AlignRight);
    mainlayout->addWidget(penColorComboBox,0,1);
    mainlayout->addWidget(penWidthLabel,1,0,Qt::AlignRight);
    mainlayout->addWidget(penWidthspinbox,1,1);
    mainlayout->addWidget(penStyleLabel,2,0,Qt::AlignRight);
    mainlayout->addWidget(penStyleComboBox,2,1);
    mainlayout->addWidget(brushColorLabel,3,0,Qt::AlignRight);
    mainlayout->addWidget(brushColorComboBox,3,1);
    mainlayout->addWidget(brushStyleLabel,4,0,Qt::AlignRight);
    mainlayout->addWidget(brushStyleComboBox,4,1);
    mainlayout->addWidget(preLabel,5,0,6,2);


    setLayout(mainlayout);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章