Qt调用外部exe并同步显示输出

之前做过一个用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函数修改一下。

原主函数:

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函数即可让界面程序启动带参数。




评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值