Qt tabanlı bir ağ kitaplığı oluşturdum ve Qt olay döngüsü çalıştırmıyor ve Qt uygulamalarının olması gerekmez. Bu Is it possible to create local event loops without calling QApplication::exec()? Bu mükemmel çalışıyor"Uyarı", ana() iş parçacığı içinde oluşturulmadı "
dan Yanıt başına bir iş parçacığı bir QCoreApplication
örneğini oluşturarak mümkün kıldı, ama Qt üzgün (bunu ben ana iş parçacığı dışında bir GUI manipüle çalışacağımız anlamına endişeli tahmin yapar hangi işe yaramaz, ama ben değilim) ve bu yüzden bir uyarı yazdırır: WARNING: QApplication was not created in main() thread
.
Aksi takdirde X11 konsoluna yazdırılacak ve büyük olasılıkla kullanıcılarımın bir grup gereksiz boşluğa girmesine neden olacak uyarıyı bastırmak istiyorum. Ancak, bazı meşru amaçlar için qDebug
kullanıyorum ve gelecekteki uyarıları görmek istiyorum, sadece THIS hatasını kaldırmak istiyorum. Bunu yapmanın bir yolu var mı, bir çeşit Qt #pragma
?
DÜZENLEME: Qt console application "WARNING: QApplication was not created in the main() thread", ama cevap uyarıyı bastırmak için anlamlı bir fikir olmadan temelde sadece bir kod incelemesi oldu:
Benzer bir soru önce burada istendi.
QApplication oluşturmadan önce Qt API'lerine (ana iş parçacığında veya yalnızca * bazı * iş parçacığına) dokunduğunuz için sorunun ortaya çıktığını düşünüyorum. Bunu yapamazsınız (QApplication'dan önce yapılması gereken modüller). Özellikle, QObjects oluşturuyorsunuz. – peppe
hmm, bu ilginç bir tavuk-yumurta problemi yaratıyor çünkü 'QCoreApplication' iş parçacığı oluşturmak için kullandığım sınıfın kendisi bir "QObject" çünkü çocuk iş parçacıklarındaki yuvalarla iletişim kurmak için sinyaller kullanması gerekiyor. –
Peki, sadece bölmek mi? Bu sınıfı mantıkla koruyun ve QCoreApplication AND sınıfınızın bir nesnesini oluşturan başka bir sınıf oluşturun. – peppe