我用qt Creator创建了一个UI,在这个UI中只有一个按钮和一个小部件(让我们分别调用它按钮和char_container); 我需要在chart_container中以编程方式添加chartview.我没有更改默认布局.
我尝试了以下代码,但它不起作用:
void MainWindow::button_slot(){
QtCharts::QChart *chart = new QtCharts::QChart();
QtCharts::QChartView *chartView = new QtCharts::QChartView(chart);
chartView->setParent(ui->chart_container);
this.repaint();
}
Run Code Online (Sandbox Code Playgroud) 第一个MainWindow在main中打开,然后当我尝试打开第二个窗口时,程序崩溃并发生SIGABRT.调试器显示以下行:
double free or corruption (out): 0x00007fffffffe340 ***
RTTI symbol not found for class 'QObject'
RTTI symbol not found for class 'QObject'
RTTI symbol not found for class 'QObject'
RTTI symbol not found for class 'QObject'
RTTI symbol not found for class 'QObject'
RTTI symbol not found for class 'QObject'
RTTI symbol not found for class 'QObject'
Run Code Online (Sandbox Code Playgroud)
我想了解调用析构函数的正确方法是什么,如果我没有设置Qt :: WA_DeleteOnClose属性,程序可以工作,如果我在第二个窗口中也这样做,(IE我在第二个QMainwindow中打开第三个窗口)即使我设置了Qt :: WA_DeleteOnClose属性,该程序仍然有效.为什么我不能只在第一个QMainWindow中做到这一点?我在主要打开的那个?
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setAttribute(Qt::WA_DeleteOnClose);
QTimer *t = new QTimer(this);
connect(t,SIGNAL(timeout()),this,SLOT(open_new()));
t->start(1000);
}
MainWindow::~MainWindow() …Run Code Online (Sandbox Code Playgroud)