简体   繁体   English

自定义Qt小部件

[英]Custom Qt Widget

How do I create a simple widget that would contain a first, middle and last name field and add it to the main window class? 如何创建一个包含小名,中间名和姓氏字段的简单小部件,并将其添加到主窗口类中?

I ask because I cant figure out why is this simple widget attempt below is not working, what have I missed? 我问是因为我不知道为什么下面这个简单的小部件尝试不起作用,我错过了什么?

main 主要

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

    return a.exec();
}

mainWindow class 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 class 卡迪班

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);
}
QMainWindow *mainView = new QMainWindow;
//....
mainView->setLayout(hCard);

You should not change layout of QMainWindow . 不应该更改QMainWindow布局。 Use setCentralWidget or add toolbars/docks using given API instead. 使用setCentralWidget或使用给定的API添加工具栏/码头。

In this particular case you shouldn't create mainView as QMainWindow (you cannot have two main windows in one application, right?). 在这种情况下,您不应该将mainView创建为QMainWindow (在一个应用程序中不能有两个窗口,对吗?)。 You can change mainView type to QWidget , but you can even don't create any proxy widgets, and just 您可以将mainView类型更改为QWidget ,但您甚至可以不创建任何代理窗口小部件,而只是

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM