gpt4 book ai didi

c++ - Qt C++串口类的继承

转载 作者:行者123 更新时间:2023-11-28 03:00:32 25 4
gpt4 key购买 nike

我想给 serialport 类添加一些功能,因此想继承它并添加一些功能。但是,我遇到了问题。我把类放在这样的头文件中:

class mySerialport : public QSerialPort
{

public:

void mySerialport(): QSerialPort(QObject*)
{


}


};

我正在修改终端示例: http://qt-project.org/doc/qt-5.1/qtserialport/terminal-mainwindow-cpp.html

这里在MainWindow构造函数中创建了一个串口对象

serial = new QSerialPort(this);

但是,在声明 mySerialport 并尝试之后

serial = new MySerialport(this); 

除了关于构造函数的大量错误消息,我什么也没得到。

问题:
1. 错误可能是什么?我想这是基本的。 2、串口为什么不继承MainWindow?当调用 MainWindow 析构函数时,串行端口是否会被删除?

最佳答案

  1. What could the error be? I guess it's basic.

替换这一行:

void mySerialport(): QSerialPort(QObject*)

用这个:

explicit mySerialport(QObject *parent): QSerialPort(parent)

您还可以根据您的确切用例考虑组合而不是继承。您还需要在 qmake 项目文件中添加 Q_OBJECT 宏以及源文件和头文件。

你会写这样的东西:

串口.h

class MySerialport : public QSerialPort
{
Q_OBJECT
public:
explicit MySerialPort(QObject *parent);
~MySerialPort();
...
};

串口.cpp

...
MySerialPort::MySerialPort(QObject *parent)
: QSerialPort(parent)
{
...
}

MySerialPort::~MySerialPort()
{
...
}

...

主程序

...

HEADERS += \
myserialport.h \
...

SOURCES += \
myserialport.cpp \
...

...

您还需要在 qmake 项目文件中添加 Q_OBJECT 宏以及源文件和头文件。

  1. Why is the serialport ineheriting the MainWindow?

我们的例子似乎不是那样构造的。

另外,不要以终端为例。我目前正在开发一个 QML 终端示例,它会更简洁。

我希望它能很快推送到 gerrit 上,准备就绪后我会在这篇文章中分享 url。

Is it the Qt thing that the serialport than will be deleted when the MainWindow destructor is called?

不,事实上,QtSerialPort 是一个核心功能,或者你可以说是“headless”。我写了几个command line based examples ,如同步和异步读者和作家。您可以在项目的示例文件夹中查看。

关于c++ - Qt C++串口类的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20954716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com