2017-09-27 3 views
0

qt Creator로 UI를 만들었습니다.이 UI에는 버튼과 위젯 만 있습니다 (각각 버튼과 char_container라고 부르 자). 차트 뷰를 chart_container 내에 프로그래밍 방식으로 추가해야합니다. 기본 레이아웃을 변경하지 않았습니다.다른 위젯 내부에 QT 삽입 위젯

나는 다음과 같은 코드를 시도했지만 작동하지 않습니다 : 또 다른 레이아웃을 사용하는 것입니다 내부 I 아래 표와 같이

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

Mainview에 Chartview를 추가해야합니다 (부모가 충분하지 않으면 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 작성자가 자동으로 레이아웃을 추가하지 않아서 sigsegv 예외가 발생했습니다. QGridLayout * gridLayout = new QGridLayout; ui-> chart_container-> setLayout (gridLayout); –

+0

버튼을 클릭 한 후 해결했습니다. i_code_container-> layout()에 의해 반환 된 포인터에 sigsegv가 나타나기 전에 chart_container에 레이아웃을 추가했습니다. –

+0

@AntonioDelSannio 기본적으로 내 권장 사항입니다. Qt 디자이너의 도움을 받아야만 가능합니다. 도움이된다면 제 답변을 올바른 것으로 표시하십시오. – eyllanesc