自定义Qt小部件

时间:2012-08-08 19:57:12

标签: c++ qt

如何创建一个包含first,middle和last name字段的简单窗口小部件并将其添加到主窗口类?

我问,因为我无法弄清楚为什么下面这个简单的小部件尝试不起作用,我错过了什么?

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

mainWindow类

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
    QMainWindow *mainView = new QMainWindow;
    setCentralWidget(mainView);

    CardUI *card = new CardUI;
    QHBoxLayout *hCard = new QHBoxLayout;

    hCard->addWidget(card);

    mainView->setLayout(hCard);
    mainView->show();
}

cardui课程

CardUI::CardUI(QWidget *parent) :  QWidget(parent){
    QLineEdit *fnText = new QLineEdit;
    QLineEdit *miText = new QLineEdit;
    QLineEdit *lnText = new QLineEdit;

    QHBoxLayout *name = new QHBoxLayout;

    name->addWidget(fnText);
    name->addWidget(miText);
    name->addWidget(lnText);

    setLayout(name);
}

1 个答案:

答案 0 :(得分:1)

QMainWindow *mainView = new QMainWindow;
//....
mainView->setLayout(hCard);

不应更改QMainWindow的布局。使用setCentralWidget或使用给定的API添加工具栏/停靠栏。

在这种特殊情况下,您不应将mainView创建为QMainWindow一个应用程序中不能有两个窗口,对吧? )。您可以将mainView类型更改为QWidget,但您甚至不能创建任何代理小部件,只需

MainWindow::MainWindow(QWidget *parent); : QMainWindow(parent){   
    card = new CardUI;
    setCentralWidget(card);
}