
(1) 新启动一个QThread thread,该线程只运行一个事件循环(QEventLoop looploop.exec())
(2)将写日哗察志文件功能单独抽象成一个继承QObject的类LogHelp
class LogHelp :public QObject
{
Q_OBJECT
public:
void Write(QString log){emit NotifyWrite(log)}
signal:
void NotifyWrite(QString log)
public slot:
void OnWrite(QString log){/*你的核心写文件代码*/}
(3)LogHelp logHelp 对象需要 movetothread 到(1)中创建的线程;logHelp.moveToThread(&thread)
(4)重点:connect(&logHelp,SIGNAL(NotifyWrite(QString)),&logHelp,SLOT(OnWrite(QString)),Qt::QueuedConnection)
如此你就可以在其它线程中直接调用logHelp .Write(log)不用管数据安全问题。
代码手敲,可能有问题,只是告诉你个思路。这样写不用维护队列,使用的是信号和槽函数纤贺的异步队列方式。
长了脑子是要用的。打开QtCreator的帮悔做助页面,找到
Qt Reference Documentation ---》Classes--》QLineEdit Class Reference
看到QLineEdit的帮助文档,
Signals
void cursorPositionChanged ( int old, int new )
void editingFinished ()
void returnPressed ()
void selectionChanged ()
void textChanged ( const QString &text )
void textEdited ( const QString &text )
textEdited()是一个信号,不是函数,不能干任何事,这是用于触发其他槽函数的。
获取文本的函嫌袭数:
Public Functions
QString text () const
获取文本用lineEdit->text()
这么简单都不用脑子?
Access functions:访碧者衡问文本的函数
QString text () const
void setText ( const QString &)
Notifier signal:通知信号
void textChanged ( const QString &text )
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)