qt系統沒eth0
❶ 解決QT的QWebsocket系統BUG,Mask為0導致網路連接斷開的問題
項目使用qwebsocket。沒想到發現一個大bug。
客戶端建立5000連接同時發送心跳包給伺服器,然後頻繁會有連接斷開。
伺服器找到原因,QWebsocket的數據幀的mask值(大概是個十六進制的東西)錯誤,這個東西的最高位必須不能為0才可以,硬性規定,否則伺服器會強制關閉這個連接。導致客戶端收到「遠程伺服器連接斷開」的error。
解決方法:
QT的QWebsocket有個介面,叫做setMaskGenerator,可以設置mask生成器,具體如下:
CMaskGenerator * m_mask = new CMaskGenerator();
QWebSocket* qwskt= new QWebSocket();
qwskt->setMaskGenerator(m_mask);
CMaskGenerator 類:
class CMaskGenerator : public QMaskGenerator
{
Q_DISABLE_COPY(CMaskGenerator)
public:
CMaskGenerator(QObject *parent = Q_NULLPTR) :QMaskGenerator(parent)
{
}
virtual quint32 nextMask()
{
quint32 val = quint32((double(qrand()) / RAND_MAX) * std::numeric_limits<quint32>::max());
while (val == 0)
{
seed();
val = quint32((double(qrand()) / RAND_MAX) * std::numeric_limits<quint32>::max());
}
return val;
}
virtual bool seed()
{
qsrand(QDateTime::currentDateTime().toTime_t());
return true;
}
private:
};
親測此問題解決了,代碼不必修改,直接可以用。
quint32((double(qrand()) / RAND_MAX) * std::numeric_limits<quint32>::max());
是Qt原本的隨機規則,它不為0就沒有問題,但我不知此值的具體要求(上限等等),所以只能沿用Qt的這個隨機規則,用循環保證它不為0
❷ qt從做完系統後安裝不了怎麼辦
到官方下載相匹配驅動程序後,解壓縮,然後在設備管理器中更新驅動時候不要自動搜索而是要指定位置,將路徑設定到你解壓縮後的目錄下就可以找到驅動並安裝了
❸ win10qt安裝後無法啟動程序什麼也沒有提示
將該exe文件所依賴的dll文件的路徑添加到操作系統的環境變數中。
一般而言,Qt4 Gui程序依賴QtCore4.dll,QtGui4.dll和mingwm10.dll等文件,所以把在這些文件所在路徑添加到環境變數里就行了。
以Qt4.5.3為例,具體做法為:我的電腦->屬性->高級->環境變數,把"C:\Qt\2009.04\mingw\bin;C:\Qt\2009.04\qt\bin加入到PATH的變數值中,如下圖,再按確定。不必重啟電腦。雙擊exe文件就可以運行了。
❹ qt3.3.1安裝時報錯,系統內存不能為Read,急啊!!!
您好!出現:0x???????? 指令引用的0x????????內存。該內存不能為"read"或"written"。答案【shijan8原創】★嚴禁復制★
【1】對電腦沒有影響或【偶爾】出現,不用管它,【重啟電腦】後可能會自動消失。
【2】盜版系統或Ghost版本系統,系統文件錯誤或丟失,也會出現該問題,及時安裝官方發行的補丁,{檢查電腦年、月、日是否正確}。建議:安裝【正版】系統。
【3】檢查驅動是否出現問題,重新安裝驅動或及時更新驅動。
【4】病毒引起的:升級殺毒軟體或下載專殺工具,清理惡意插件,對電腦全盤殺毒。
【5】硬體引起的:
(1)可能是內存條出現的小問題,關機斷電,把內存條拆下清理干凈重新安裝。必要時更換內存條。(硬體上一般不會出現該問題)
【6】軟體引起的:
(1)安裝的軟體與系統或其它軟體發生沖突,盜版或帶病毒的軟體,請慎重下載軟體,最好使用正版。【這里主要說的是檢查開機啟動項,把沒必要啟動的啟動項禁止開機啟動】
(2)如果你的電腦中安裝了兩款或兩款以上的同類軟體,比如:兩款殺毒軟體、兩款優化系統軟體等,請卸載一款,以免發生沖突,以保持電腦穩定性。
(3)有些系統補丁下載安裝了錯誤補丁,可能與您當前的系統或其它軟體發生沖突,也會出現該問題。卸載該補丁,找到適合您電腦補丁,重新下載重新安裝。
(4)當安裝或打開運行播放器、游戲、QQ等第三方軟體,出現該問題時。可能是您下載的軟體存在著危險,系統本身為了保護系統不受影響,也會出現該內存不能為「read」或「wrtten」。一般的解決辦法就是卸載該軟體重新安裝。如果不能解決,需要更換同類型其它版本的軟體,或找到發生沖突的軟體卸載它,問題才能解決。
可以試試下面的方法:看看能不能解決。
◆開始→運行→輸入cmd→回車,在命令提示符下輸入下面命令
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回車。
完成後,在輸入下面的
for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回車。
如果怕輸入錯誤,可以復制這兩條指令,然後在命令提示符後擊滑鼠右鍵,打「粘貼」,回車,耐心等待,直到屏幕滾動停止為止。(重啟電腦)。
●在檢查運行regedit進入注冊表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks 下,應該只有一個正常的鍵值{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 將其他的刪除。【如果還有一個(默認)值不用管它,一般它為空。】必要時【還原】或重新安裝系統。
❺ Qt和Ubuntu之間的通信協議是什麼
Qt是一個跨平台的gui框架,
ubuntu是一個操作系統。
Qt可以運行在ubuntu平台之上,但兩者之間沒有什麼通信協議的說法,只有Qt會為了在ubuntu上運行起來,會做一些針對ubuntu系統的適配,比如描畫以及系統的key/mouse事件之類。
請採納,謝謝。
❻ 如何在QT下執行shell或外部程序
1、設計gui圖形界面,創建一button,並在clicked下添加代碼
第一種方法(50行)是調用linux C函數庫中的system(const char *string);
第二種方法(51行)和第三種方法(53 54行)是調QT里的函數;
需要說明的時,上面三種方法都是可以的,但前兩種方法會阻塞進程,直到smplayer程序結束,而第三種方法則不會阻塞進程,可以多任務運行。
還有,我們知道qt在運行的時候,要啟動qws(qtwindows server),如果用前面兩種方法,則smplayer運行的時候,要新開啟一個qws,否則不能運行;而用第三種方法,則不需要再開啟qws,它和HelloQt4共用一個qws,這樣,在一個窗口裡可以看到這兩個程序。
2、新建運行腳本,用來啟動smplayer播放器
在上一步中,qt程序執行了
/opt/run_smplayer腳本,但這個腳本是不存在的,我們要新建它,打開開發板的/opt目錄,新建一個run_smplayer文件,添加如下內容
#!/bin/sh
#測試用
#cd /opt/
#rm qt_create/
-rf
#sleep 3
#mkdir qt_create
#cd qt_create
#mkdir qt_create1
#cd qt_create1
#mkdir qt_create2
#cd qt_create2
#mkdir ok
#直接調用mplayer播放sdcard里的gq.avi文件
#cd /usr/local/smplayer/bin
#./mplayer /sdcard/gq.avi
#啟動友善的smplayer
cd /usr/local/smplayer/bin
./smplayer
3、修改smplayer文件
在友善的根文件系統中,/user/lical/smplayer/bin目錄中的smplayer腳本是有問題的,如果直接運行它,會出現滑鼠和觸摸屏
不能使用的情況,我們要將/bin目錄下的smplayer腳本復制過來,並將最後兩行中的qws去掉。(前面提到過的,我們要多任務運行,不需要再開一
個qws)
export HOME=/root
cd /usr/local/smplayer/
exe__c ./smplayer #-qws 1>/dev/null
2>/dev/null
// 此處有屏蔽字,真實沒有下劃線
#hotplug
4、修改rcS文件,使之開機就運行HelloQt4i程序
rcS文件如下:
#!
/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
#
# Trap CTRL-C &c
only in
this shell so we
can interrupt subprocesses.
#
trap ":" INT QUIT TSTP
/bin/hostname Crt
[ -e /proc/1 ]
||
/bin/mount -n -t proc none
/proc
[ -e /sys/class ] ||
/bin/mount -n -t sysfs none /sys
[ -e /dev/tty ]
||
/bin/mount
-t ramfs
none /dev
/bin/mount -n -t usbfs none
/proc/bus/usb
echo /sbin/mdev >
/proc/sys/kernel/hotplug
/sbin/mdev -s
/bin/hotplug
# mounting file system specified in
/etc/fstab
mkdir -p /dev/pts
mkdir -p /dev/shm
/bin/mount -n -t devpts none
/dev/pts -o mode=0622
/bin/mount -n -t tmpfs tmpfs /dev/shm
/bin/mount
-n
-t ramfs
none /tmp
/bin/mount -n -t ramfs none
/var
mkdir -p /var/empty
mkdir -p /var/log
mkdir -p /var/lock
mkdir -p /var/run
mkdir -p /var/tmp
/sbin/hwclock -s
syslogd
/etc/rc.d/init.d/netd start
echo "
"
>
/dev/tty1
echo "Starting networking..."
>
/dev/tty1
sleep 1
/etc/rc.d/init.d/httpd start
echo "
"
>
/dev/tty1
echo "Starting web server..."
>
/dev/tty1
sleep 1
/etc/rc.d/init.d/leds start
echo "
"
>
/dev/tty1
echo "Starting leds service..."
>
/dev/tty1
echo "
"
sleep 1
echo "
"
>
/dev/tty1
/etc/rc.d/init.d/alsaconf start
echo "Loading sound card config..."
>
/dev/tty1
echo "
"
/sbin/ifconfig lo 127.0.0.1
/etc/init.d/ifconfig-eth0
#/bin/qt4 &
#echo "
"
>
/dev/tty1
#echo "Starting Qt4 Applications, please
waiting..."
>
/dev/tty1
#/bin/smplayer &
#echo "
"
>
/dev/tty1
#echo "Starting smplayer Applications, please
waiting..."
>
/dev/tty1
/bin/hello_qt4app &
echo "
"
>
/dev/tty1
echo "Starting
hello_qt4 Applications, please
waiting..."
>
/dev/tty1
hello_qt4app腳本如下:
#!/bin/sh
rm /root/.config/
-rf;
rm /root/.mplayer/
-rf;
if [ -e /etc/friendlyarm-ts-input.conf ] ; then
. /etc/friendlyarm-ts-input.conf
fi
true
${TSLIB_TSDEVICE:=/dev/touchscreen}
TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_TSDEVICE
export TSLIB_CONFFILE
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_DISPLAY=:1
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/bin
if [ -c /dev/touchscreen ]; then
export
QWS_MOUSE_PROTO="Tslib:${TSLIB_TSDEVICE}
MouseMan:/dev/input/mice"
if [
-e
/etc/pointercal -a !
-s
/etc/pointercal ] ; then
rm
/etc/pointercal
fi
else
export
QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"
>/etc/pointercal
fi
export QWS_KEYBOARD=TTY:/dev/tty1
export HOME=/root
cd /opt
./hello_qt4
-qws
1>/dev/null
2>/dev/null
hotplug
然後,重啟開發板,hello_qt4程序運行了,再點button,播放器也彈出來了。
❼ 使用Qt靜態庫為什麼運行出錯
因為鏈接的是qt的動態庫,在沒有qt動態庫的系統上肯定是運行不了的。
有兩種方法,
一種是靜態編譯,但會讓運行文件變大。
二種就是把動態庫和程序一起打包出去,路徑設置
❽ QT系統初始化失敗如何解決..
請使用2。2或者3。0版本,不過注意3。0版本有很多問題會出現,由於它是最新版本,公測期間本身就系統不穩定。
一般是XP系統的人把電腦里所有QQ堂文件找出來刪除干凈,再重新下載就OK了。但是由於測期間系統本身就問題多多,所以有的人乾脆使用回2。2版本。
這個和電腦內存也有一定關系,請加大內存或者使用超級兔子這樣的軟體清理電腦垃圾加快網路。重新啟動電腦也可以試試。並檢查電腦是否設置限制只有管理員可操作。
❾ QT怎麼更改IP地址,跪求
//如果在linux下面請直接用QProcess進行配置
QProcess*process=newQProcess();
process->start("ifconfig",QStringList()<<"eth0"<<"192.168.1.100");