コンストラクタコントロールで書かれたQTは、(ボタンが表示されていない)問題を表示しません。

まず、問題:

そこには、あなたが初期化するために、コンストラクタ内で、新しいプロジェクトのボタンやその他のコントロールを記述した後、それを引き起こすもの、何も表示されない、発見された空白のウィンドウを実行するための時間を見つけるのだろうか?

第二に、その理由が発生する可能性があります。

1、新しいプロジェクトエンジニアのメインウィンドウのサブクラスは、親ウィンドウが設定されていません。

2は、自分自身を定義するウィジェットコントロールの親ウィンドウを設定しませんでした。

例えば:

#include<QMainWindow>

QMainWindow::QMainWindow(QMainWindow*parent) :
    QMainWindow(parent),
    ui(new Ui::QMainWindow)
{
     ui->setupUi(this);
     QPushButton* button_1 = new QPushButton("add");
     QPushButton* button_1 = new QPushButton("del");
}

第三に、結果:

空白のフォーム

第四に、解決策:

解決策1:

QWidgetの、そして親ウィンドウにボタンを追加します。親ウィンドウを設定するためのButtonコントロール。

#include<QMainWindow>
#include<QPushButton>
#include<QHBoxLayout>

QMainWindow::QMainWindow(QMainWindow*parent) :
    QMainWindow(parent),
    ui(new Ui::QMainWindow)
{
     ui->setupUi(this);
     QWidget* w = new QWidget();
     this->setCentralWidget(w);
     QHBoxLayout* hLayout = new QHBoxLayout();
     QPushButton* button_1 = new QPushButton("add");
     QPushButton* button_1 = new QPushButton("del");
     hLayout->addWidget(button_1);
     hLayout->addWidget(button_2);
     w->setLayout(hLayout);
}

解決策2:

直接QWidgetのプロジェクトを内蔵

#include<QWidget>
#include<QPushButton>
#include<QVBoxLayout>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
        ui->setupUi(this);

        QPushButton* button_1 = new QPushButton("add");
        QPushButton* button_2 = new QPushButton("del");
        QHBoxLayout* hLayout = new QHBoxLayout();
        QVBoxLayout* vLayout = new QVBoxLayout();

        hLayout->addWidget(button_1);
        hLayout->addWidget(button_2);
        this->setLayout(hLayout);
}

解決策3:

#include<QMainWindow>
#include<QPushButton>
#include<QHBoxLayout>

QMainWindow::QMainWindow(QMainWindow*parent) :
    QMainWindow(parent),
    ui(new Ui::QMainWindow)
{
     ui->setupUi(this);
    
    
     QPushButton* button_1 = new QPushButton("add");
     QPushButton* button_1 = new QPushButton("del");
     button_1->setParent(this);
     button_2->setParent(this);
     button_2->move(300,100);
    
}

V.結論:

コントロールのフォームが表示されているしたい、あなたはこれらのコントロールの親ウィンドウにフォームを設定する必要があります。

新しいプロジェクト親子関係にする方法:

レイアウトマネージャにコントロールを追加するには(1)、QTは自動的に親子関係を生成します。このような溶液1,2、ボタンをレイアウトマネージャに直接追加することができ、明確なためにここに追加、QWdigetする必要はありません、あなたが必要とされないことがあります。

新しいQMainWindowは、独自の指定されたコントロールの親フォームを必要とする場合(2)。例えば、ソリューションの3

 

 

 

公開された23元の記事 ウォンの賞賛4 ビュー9964

おすすめ

転載: blog.csdn.net/hxp1994/article/details/103882980