[英]Inheritance of serial port class Qt C++
我想为serialport类添加一些功能,因此希望继承它并添加som函数。 但是,我遇到了问题。 我把这个类放在这样的头文件中:
class mySerialport : public QSerialPort
{
public:
void mySerialport(): QSerialPort(QObject*)
{
}
};
我正在修改终端示例: http : //qt-project.org/doc/qt-5.1/qtserialport/terminal-mainwindow-cpp.html
这里在MainWindow构造函数中创建一个serialport对象
serial = new QSerialPort(this);
然而,在声明mySerialport并尝试之后
serial = new MySerialport(this);
我得到的只是关于构造函数的无数错误消息。
问题:
1.错误是什么? 我想这是基本的。 2.为什么序列端口不能使用MainWindow? 在调用MainWindow析构函数时,串口是否会被删除?
- 错误是什么? 我想这是基本的。
替换此行:
void mySerialport(): QSerialPort(QObject*)
有了这个:
explicit mySerialport(QObject *parent): QSerialPort(parent)
您还可以根据您的确切用例考虑组合而不是继承。 您还需要具有Q_OBJECT宏,以及qmake项目文件中添加的源文件和头文件。
你会写这样的东西:
class MySerialport : public QSerialPort
{
Q_OBJECT
public:
explicit MySerialPort(QObject *parent);
~MySerialPort();
...
};
...
MySerialPort::MySerialPort(QObject *parent)
: QSerialPort(parent)
{
...
}
MySerialPort::~MySerialPort()
{
...
}
...
...
HEADERS += \
myserialport.h \
...
SOURCES += \
myserialport.cpp \
...
...
您还需要具有Q_OBJECT宏,以及qmake项目文件中添加的源文件和头文件。
- 为什么序列端口不能使用MainWindow?
我们的例子似乎没有这样构建。
另外,不要把终端作为一个很好的例子。 我目前正在研究一个更清洁的QML终端示例。
我希望很快就能推出针对gerrit的内容,我会在这篇文章的后期分享这个网址。
在调用MainWindow析构函数时,串口是否会被删除?
不,实际上,QtSerialPort是核心功能,或者你可以说“无头”。 我已经编写了几个基于命令行的示例 ,如同步和异步读取器和编写器。 您可以在项目的examples文件夹中查看它。
QObject
传递给mySerialport
构造函数并将其重定向到QSerialPort
构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.