QT中使用函数指针
2016-03-07 11:57
393 查看
想仿命令行,所以定义了一个类,让一个String 对应一个 function,将两者输入list容器。
类中定义了
声明:
类中定义了
QString commandStr;
void (MainWindow::*commandFun)(void); 一个QString ,一个指向MainWindow类成员函数的指针。 但是没想到在类中使用函数指针这么复杂。 一般情况,我们使用函数指针声明和引用都很简单明了。但是在类中就不一样了。 最后的成功的形式如下:
class command_type { public: command_type(QString str,void (MainWindow::*cFun)(void) ) { commandStr=str; commandFun=cFun; } QString commandStr; void (MainWindow::*commandFun)(void); }; class MainWindow : public QMainWindow { //...... 省略其他 QList<command_type> commandList; //...... } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { //......省略其他 commandList<<command_type("refresh com",&MainWindow::EnumSerailInfo); } void MainWindow::parseCommand(QString str) { qDebug()<<str; foreach(command_type c,commandList) { if(c.commandStr==str) { (this->*(c.commandFun))(); qDebug()<<"match"; } } }
声明:
void (MainWindow::*commandFun)(void); 相对于普通的函数指针声明,这里要加上MainWindow::,不同的类不能通用。 引用:
(this->*(c.commandFun))(); 相对于普通的函数指针引用,这里必须要this指针。如果是在其他类或者main函数中使用,则必须用对象引用(对象才有实际内存空间)。
相关文章推荐
- 世界领先的跨平台开发技术Qt Enterprise 5.6 新功能预览
- Qt中QSet的使用
- Qt5.3.2_CentOS6.4_x86_编程调试环境
- Qt编写串口通信程序全程图文讲解 --转载
- Qt串口通信
- qt for 安卓
- QT+MYSQL
- Qt之设置QWidget背景色(4种方法,推荐QWidget::setAutoFillBackground)
- Qt之启动外部程序(使用参数很全面,还使用了setProcessChannelMode)
- C++之Qt编程初级
- Qt乱码
- redhat6.4 64安装qt5.0.run
- Qt5::WindowFlags枚举类型
- QT 给.exe文件添加图标
- pyqt5载入qml
- pyqt4制作透明无边框窗体
- Qt遇到的问题
- 基于Qt4.7的ADC测试程序
- Qt之HTTP上传/下载
- Qt之HTTP上传/下载