日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

ubuntu QT Creator Fatal IO error 2 (没有那个文件或目录) on X server :0

發布時間:2023/12/18 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ubuntu QT Creator Fatal IO error 2 (没有那个文件或目录) on X server :0 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這幾天,碰到一個很奇怪的問題,用QT Creator 編寫的程序,在Windows上運行良好;移植到MAC上,也測試運行沒有問題。現在計劃把程序移植到Ubuntu上。

移植完成之后,編譯沒有問題(在移植到MAC上時已經把Windows與類Unix的語法不兼容的問題全解決了),然后運行程序,發現程序崩潰,并提示如下錯誤:

(程序名:88351): Gdk-WARNING ** 程序名: Fatal IO error 2 (沒有那個文件或目錄) on X server :0.

查相關資料,有這樣的資料:

1)http://m.bubuko.com/infodetail-701169.html

2)https://blog.csdn.net/weixin_30883271/article/details/94776498

3)https://www.cnblogs.com/tibetanmastiff/p/4368755.html

其中博客1和博客3是同一個。這幾個技術博客大致一個意思,就是圖片資源被多線程搶占了,導致資源不可用。

我自己也試圖調用Ubuntu上調用GTK線程的方法,但我發現方法不起作用。因為,我自己的程序是,就這部分運行的,屬于單獨調用的部分,顯然不是多線程的問題。

但這幾篇博客有一個提醒,或者啟示,就是問題為資源被占用了。

我繼續調試,想起一個方法:如果程序出問題,把出問題的地方注掉,看程序是否能運行。

經過多次注釋,發現當文件中存在這圖形框設置ICon的時候,程序就會出問題。

我自己提供了一個簡單的Demo:

//DLGTITLE, STRINFO 和 LOGOPATH為外部信息QMessageBox box(QMessageBox::Information, DLGTITLE, STRINFO);box.setStandardButtons(QMessageBox::Yes | QMessageBox::No);box.setButtonText(QMessageBox::Yes, QString("是"));box.setButtonText(QMessageBox::No, QString("否"));QString qstrFileName = LOGOPATH;QIcon qIcon(qstrFileName);box.setWindowIcon(qIcon); //當設置Icon的時候,必然會發生上面問題。box.exec();

發現當程序setWindowIcon存在的時候,必然發生這個問題;把這句話注掉,程序運行正常。

于是查詢更多的資料,有關Ubuntu設置Icon的。

查到資料如下:

1)https://forum.qt.io/topic/102167/how-to-add-qt-application-icon-in-ubuntu/4

2)https://doc.qt.io/qt-5/appicon.html#setting-the-application-icon-on-common-linux-desktops

原話摘抄如下:

“In this section we briefly describe the issues involved in providing icons for applications for two common Linux desktop environments:?KDE?and?GNOME. The core technology used to describe application icons is the same for both desktops, and may also apply to others, but there are details which are specific to each. The main source of information on the standards used by these Linux desktops is?freedesktop.org. For information on other Linux desktops please refer to the documentation for the desktops you are interested in."

"If you are developing exclusively for GNOME, you may wish to use the standard set of?GNU Build Tools, also described in the relevant section of the?GTK+/Gnome Application Development book. This ensures that your icons are installed in the appropriate locations for GNOME."

大致意思是,Linux圖形化顯示用了兩種策略KDE和GNONE,分別執行了不同標準。而顯然,Gdk-WARNING屬于GNOME;也就是GNOME對設置ICON是有一定限制的。

我自己繼續查找了資料,大致給出的結論是:在Ubuntu上和Windows上,資源路徑的尋找方式是不同的。

我修改了下資源路徑,不再用Ubuntu默認的方法:獲得路徑法,而采用URL方法,而不是Path方法,發現不再出現這個問題。

我發現使用URL方法成功了,但是QT中的ICON沒有成功顯示。我發現,在Ubuntu上,圖標是不再是在左邊,于是,我想了個方法,先把所有有關ICON的方法注掉,程序運行正確。

如何設置正確的ICON,會在以后繼續尋找方法。

——————————————————————————————————————————————分割線

經過測試,在Ubuntu上,setWindowIcon僅僅為設置程序的Icon(即在啟動器一欄上的圖標),而不能如Windows一樣,是既設置程序的圖片,又設置程序左上角的Icon。

?

總結

以上是生活随笔為你收集整理的ubuntu QT Creator Fatal IO error 2 (没有那个文件或目录) on X server :0的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。