arg(__FUNCTION__)
时间: 2023-10-24 14:06:03 浏览: 43
引用: 上例的runSomeBigWork2中,让一个int不停自加1,一直加到int的最大值,为了验证加锁和不加锁的影响,这里对加锁和不加锁运行了两次观察耗时的变化 void ThreadObject::runSomeBigWork2(){ { QMutexLocker locker(&m_stopMutex); m_isStop = false; } int count = 0; QString str = QString("%1->%2,thread id:%3").arg(__FILE__).arg(__FUNCTION__).arg((int)QThread::currentThreadId()); emit message(str); int process = 0; QElapsedTimer timer; timer.start(); while(1) { { QMutexLocker locker(&m_stopMutex); if(m_isStop) return; } if(m_runCount2 == count) { break; } int pro = ((float)count / m_runCount2) * 100; if(pro != process) { process = pro; emit progress(pro); emit message(QString("%1,%2,%3,%4") .arg(count) .arg(m_runCount2) .arg(pro) .arg(timer.elapsed())); timer.restart(); } count; }}
引用: 主界面的头文件(截取部分代码): #include <QWidget>#include <QTimer>class ThreadFromQThread;class ThreadObject;namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECTpublic: explicit Widget(QWidget *parent = 0); ~Widget();signals: void startObjThreadWork1(); void startObjThreadWork2();private slots:…… void onButtonObjectMove2ThreadClicked(); void onButtonObjectMove2Thread2Clicked(); void onButtonObjectQuitClicked(); void onButtonObjectThreadStopClicked(); void progress(int val); void receiveMessage(const QString& str); void heartTimeOut();private: void startObjThread(); private: Ui::Widget *ui; …… ThreadObject* m_obj; QThread* m_objThread;};
引用: 看看Qt官方文档的例子: class Worker : public QObject{ Q_OBJECTpublic slots: void doWork(const QString &parameter) { QString result; /* ... here is the expensive or blocking operation ... */ emit resultReady(result); }signals: void resultReady(const QString &result);};class Controller : public QObject{ Q_OBJECT QThread workerThread;public: Controller() { Worker *worker = new Worker; worker->moveToThread(&workerThread); connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater); connect(this, &Controller::operate, worker, &Worker::doWork); connect(worker, &Worker::resultReady, this, &Controller::handleResults); workerThread.start(); } ~Controller() { workerThread.quit(); workerThread.wait(); }public slots: void handleResults(const QString &);signals: void operate(const QString &);};
问题:请告诉我,arg(__FUNCTION__)
arg(__FUNCTION__)是一个Qt的QString函数,它返回当前函数的名称作为字符串。在引用的例子中,它被用来构造一个带有文件名、函数名和线程ID的字符串,用于输出调试信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Qt使用多线程的一些心得——2.继承QObject的多线程使用方法](https://blog.csdn.net/czyt1988/article/details/71194457)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]