Первый вопрос здесь, так что терпите меня.
Я пытался создать представление для QMainWindow, используя QDeclarativeView в качестве холста, но всякий раз, когда я пытаюсь переключить источник QDeclarativeView, мои программные ошибки segfaults, и я, честно говоря, понятия не имею, почему или как исправитьЭто.
Вот моя функция swapView ().
void MainWindow::swapView(int view)
{
switch (view)
{
case 0:
cout << "Switching to Slideshow..." << endl;
this->setSource("Slideshow.qml");
break;
case 1:
cout << "Switching to Main Canvas..." << endl;
this->setSource("Test.qml");
cout << "Successfully switched to Main Canvas!" << endl;
break;
}
}
Вот метод setSource (), который он вызывает:
void MainWindow::setSource(QString fileName)
{
this->ui->declarativeView->setSource(QUrl::fromLocalFile("Test.qml"));
}
Я попытался заменить код вышес кодом ниже, и он избавляется от segfault, но каждое окно открывается в отдельном окне, а не просто заменяет представление в QDeclarativeView.
void MainWindow::setSource(QString fileName)
{
QDeclarativeView *view = new QDeclarativeView;
view->setSource(QUrl::fromLocalFile(fileName));
ui->declarativeView = view;
ui->declarativeView->show();
}
Если у кого-то есть мнение о том, что я делаю неправильно (я уверен, что это что-то глупое), пожалуйста, дайте мне знать ...
Спасибо.