c++ - 如何从 QTabWidget 的当前选项卡中获取继承 QTreeView 的类?
问题描述
我用标签写了一个简单的调频。我需要从 QTreeWidget 的当前选项卡中放置并获取继承名为“View”的 QTreeView 的类。
我试过了
View v = qobject_cast<View>(ui->tabs->widget(index));
但是这段代码返回
error: use of deleted function ‘View::View(View&&)’
主窗口.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
View *view = new View;
view->text = "hey";
ui->tabs->addTab(view, "new");
connect(ui->tabs, &QTabWidget::currentChanged, this, &MainWindow::curChanged);
}
void MainWindow::curChanged(int index)
{
View v = qobject_cast<View>(ui->tabs->widget(index));
// some code with View
}
MainWindow::~MainWindow()
{
delete ui;
}
主窗口.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "view.h"
#include <QMainWindow>
#include <QDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
void curChanged(int index);
private slots:
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
视图.h
#include <QTreeView>
#include <QFileSystemModel>
#include <string.h>
class View : public QTreeView
{
public:
std::string text;
};
错误信息:
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtCore -I. -I. -I/usr/lib64/qt5/mkspecs/linux-g++ -o main.o main.cpp
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtCore -I. -I. -I/usr/lib64/qt5/mkspecs/linux-g++ -o mainwindow.o mainwindow.cpp
/usr/lib64/qt5/bin/moc -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB --include /home/c63/Projects/C++/QT/sof/moc_predefs.h -I/usr/lib64/qt5/mkspecs/linux-g++ -I/home/c63/Projects/C++/QT/sof -I/home/c63/Projects/C++/QT/sof -I/usr/include/qt5 -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/g++-v8 -I/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/g++-v8/x86_64-pc-linux-gnu -I/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/g++-v8/backward -I/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include -I/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include-fixed -I/usr/include mainwindow.h -o moc_mainwindow.cpp
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtCore -I. -I. -I/usr/lib64/qt5/mkspecs/linux-g++ -o moc_mainwindow.o moc_mainwindow.cpp
g++ -Wl,-O1 -o sof main.o mainwindow.o moc_mainwindow.o -lQt5Widgets -lQt5Gui -lQt5Core /usr/lib64/libGLESv2.so -lpthread
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: mainwindow.o: in function `MainWindow::curChanged(int)':
mainwindow.cpp:(.text+0x2b): undefined reference to `View::staticMetaObject'
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: mainwindow.o: in function `MainWindow::MainWindow(QWidget*)':
mainwindow.cpp:(.text+0x3aa): undefined reference to `vtable for View'
collect2: error: ld returned 1 exit status
make: *** [Makefile:171: sof] Error 1
解决方案
推荐阅读
- python - Twitter API 搜索应用,返回某些 json 结果
- php - 如何在 html 中包含 php 文件,以便网站加载 php 开始的位置而不是开头?
- typescript - Angular 7 ngZone 抛出未定义的错误
- android - Searchview 使用关键字和 Unsplash API
- r - 在ggplot2中重新创建直方图ldahist()?
- python - 在 Python 的 Windows 10 中从屏幕上抓取一个窗口
- python - get_queryset() 缺少 1 个必需的位置参数:'country_id'
- .net-core - 在 .netcore 中使用 .NetFramwork 库
- python - 如何操作Excel整行
- azure-data-factory - 自定义 Azure 数据工厂 ARM 模板的参数