Qt调用外部exe并同步显示输出
2016-01-08 09:13
447 查看
之前做过一个用C#同步调用exe并显示输出的程序,最近又想用一个Qt做一下这个工作;相比之下,Qt确实要简单许多。
我参考http://blog.sina.com.cn/s/blog_7243586a0100t2vn.html,很快就做出了一个同步显示的程序。
界面如下:
界面虽然丑,但已经达到了同步输出的目的,一下是其代码地址:链接:http://pan.baidu.com/s/1dEuAmSp 密码:85ip。
但是除此之外,我还想分享一点别的。
一、那就是QString和std::string的问题。
在Qt中参数的传入是使用QStringList,而我在使用VS2010编写exe的时候并没有包含Qt的一些语法格式,所以存在一个两者的转换,这里需要注意的是要将Vs2010自动生成的main函数修改一下。
原主函数:
修改为
二、同步输出的中文字符的问题。
在exe中的输出肯定含有中文字符,直接传递到Qt中会出现中文乱码;不过解决的方法也很简单,只需要在示例代码中的on_read()函数中,将
修改为:
就好了。
三、如何使得TextEdit总是保持在最末
在进行文档输出的时候,TextEdit中的内容会不断增加。此时,滚动条的默认都是保持在最上方。但是我们为了使得其更加正常,我们应让滚动条保持在文章的最后。
解决方法是添加一个SLOT:
当TextEdit中的内容发生变化后,可以用connect进行关联即可保持TextEdit的滚动条总是在文章的最末尾。
四、如何让界面程序带参数启动
这个问题看起来复杂,其实只要在main函数中设置argv即可,最后利用一些set函数即可让界面程序启动带参数。
我参考http://blog.sina.com.cn/s/blog_7243586a0100t2vn.html,很快就做出了一个同步显示的程序。
界面如下:
界面虽然丑,但已经达到了同步输出的目的,一下是其代码地址:链接:http://pan.baidu.com/s/1dEuAmSp 密码:85ip。
但是除此之外,我还想分享一点别的。
一、那就是QString和std::string的问题。
在Qt中参数的传入是使用QStringList,而我在使用VS2010编写exe的时候并没有包含Qt的一些语法格式,所以存在一个两者的转换,这里需要注意的是要将Vs2010自动生成的main函数修改一下。
原主函数:
int _tmain(int argc, _TCHAR* argv[]) { return 0; }
修改为
int main(int argc, char* argv[]) { return 0; }
二、同步输出的中文字符的问题。
在exe中的输出肯定含有中文字符,直接传递到Qt中会出现中文乱码;不过解决的方法也很简单,只需要在示例代码中的on_read()函数中,将
output +=pProces->readAll();
修改为:
output += QString::fromLocal8Bit(pProces->readAll());
就好了。
三、如何使得TextEdit总是保持在最末
在进行文档输出的时候,TextEdit中的内容会不断增加。此时,滚动条的默认都是保持在最上方。但是我们为了使得其更加正常,我们应让滚动条保持在文章的最后。
解决方法是添加一个SLOT:
void Widget::move_to_end()
{
ui->textEdit_log->moveCursor(QTextCursor::End);
}
当TextEdit中的内容发生变化后,可以用connect进行关联即可保持TextEdit的滚动条总是在文章的最末尾。
四、如何让界面程序带参数启动
这个问题看起来复杂,其实只要在main函数中设置argv即可,最后利用一些set函数即可让界面程序启动带参数。
相关文章推荐
- Qt打开外部程序和文件夹需要注意的细节(Qt调用VC写的动态库,VC需要用C的方式输出函数,否则MinGW32编译过程会报错)
- Qt在各平台上的搭建qt-everywhere
- Qt+SQLite数据加密的一种思路(内存数据库)
- 建立QT交叉编译环境
- Qt之启动外部程序
- Qt之启动外部程序
- OK6410 Qt Segment fault
- pyqt中信号与槽的参数传递。
- QString::toLocal8Bit得听QTextCodec::codecForLocale的
- 初学QT笔记: 多个QLineEdit之间的焦点设置、切换、获取
- qt tableview代理1
- qt tableview代理实现
- QT for windows 32下libusb-win32环境搭建
- Qt信号量QSemaphore
- qt tableview
- QThread定时器
- Qt 事件系统
- qt鼠标事件使用
- x11 gtk qt gnome kde 之间的区别和联系 .
- QT xml转ini的实现(从C#转到QT)