2017-09-27 11 views
0

qt CreatorでUIを作成しました。このUIにボタンとウィジェットがあります(それぞれボタンとchar_containerと呼ばせてください)。 chart_containerの内部にプログラムでChartviewを追加する必要があります。 私はデフォルトレイアウトを変更しませんでした。QT他のウィジェット内にウィジェットを挿入

私は、次のコードを試してみたが、それは動作しません:

void MainWindow::button_slot(){ 
    QtCharts::QChart *chart = new QtCharts::QChart(); 
    QtCharts::QChartView *chartView = new QtCharts::QChartView(chart); 
    chartView->setParent(ui->chart_container); 
    this.repaint(); 
} 
+1

あなたはまだChartWindをMainWindowに追加する必要があります(親が十分でない、AFAIKを設定するだけです)。 – dbrank0

答えて

4

私は以下を示して別の内部のウィジェットを追加するための最良の方法は、レイアウトを使用することです:

//on constructor 
ui->chart_container->setLayout(new QVBoxLayout); 


void MainWindow::button_slot() 
{ 
    QtCharts::QChart *chart = new QtCharts::QChart(); 
    QtCharts::QChartView *chartView = new QtCharts::QChartView(chart, ui->chart_container); 
    ui->chart_container->layout()->addWidget(chartView); 
} 
+0

私はこの行を追加する必要があります。QT Creatorは自動的にレイアウトを追加しないので、sigsegv例外が発生します。QGridLayout * gridLayout = new QGridLayout; ui-> chart_container-> setLayout(gridLayout); –

+0

ボタンをクリックした後、解決しました。私は、ui-> chart_container-> layout()によって返されたポインタのsigsegvを得る前に、chart_containerにレイアウトを追加しました。 –

+0

@AntonioDelSannio基本的には、あなたがQt Designerの助けを借りてそれをやっただけです。私の答えが正しいとマークしてください。 – eyllanesc

関連する問題