91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PyQt5程序

發布時間:2020-06-13 08:01:59 來源:網絡 閱讀:2404 作者:招魂怪 欄目:開發技術

最近,看了看PyQt5,相關的資料確實很少,PyQt4到PyQt5的變動還是很大。寫了個帶前進后退功能的小瀏覽器,一直都是寫命令行的程序,確實很少寫帶界面的程序,只是為了創新、突破,開個頭


下面是網上找的前面說的變動:


QtWidgets作為一個獨立的模塊


例如編譯時錯誤

    error: QMainWindow: No such file or directory
    error :  QToolButton : No such file or directory
    error :  QWidget: No such file or directory

解決辦法:

在*.pro文件里添加:

QT += widgets

更改

#include <QtGui>

#include <QtWidgets>



程序現在應該就可以運行了,但是有時可能需要更加明確的包含

#include <QtWidgets/QToolButton>



  

QtWebKitWidgets也是一個獨立的模塊:


例如編譯時錯誤

error: invalid use of incomplete type 'class QWebFrame'
error     : forward declaration of      'class QWebFrame'



解決辦法:

在*.pro文件里添加:

  1. QT += webkitwidgets

注意:當有QT += webkitwidgets的時候,就不再需要QT += widgets

此外,更改

  1. #inclue <QtWebKit>

  1. #include <QtWebKitWidgets>

  


打印機不工作

如果你的代碼有以下幾行:

    #include <QPrinter>
    #include <QPrintDialog>

將以下內容添加到項目文件中:

    Qt += printsupport

同樣,有時可能仍無法正常工作,需要指定:

    #include <QtPrintSupport/ QPrinter >
    #include  <QtPrintSupport/ QPrintDialog>


  

toAscii()和fromAscii()已被棄用

替換

fromAscii()
toAscii()

fromLatin1()
toLatin1()

例如,給定的Qt4代碼

QByteArry configfileti  =  TMP_Config. toAscii() ;

變為   

QByteArry configfileti  =  TMP_Config. toLatin1() ;



QCoreApplication::UnicodeUTF8已被棄用

此枚舉類型用于定義8位編碼的字符串參數translate()。此枚舉現在已經過時,所有的情況將使用UTF-8所以刪除了QCoreApplication::UnicodeUTF8的所有實例。例如:

    Href_Gui -> setWindowTitle ( QApplication :: translate ( "Href_Gui" ,  "Url / www" ,  0 ,  QApplication :: UnicodeUTF8 ) ) ;
    label -> setText ( QApplication :: translate ( "Href_Gui" ,  "Text:" ,  0 ,  QApplication :: UnicodeUTF8 ) ) ;
    label_2 -> setText ( QApplication :: translate ( "Href_Gui" ,  "Url:" ,  0 ,  QApplication :: UnicodeUTF8 ) ) ;
    label_3 -> setText ( QApplication :: translate ( "Href_Gui" ,  "Target / Name:" ,  0 ,  QApplication :: UnicodeUTF8 ) ) ;


變為

    Href_Gui -> setWindowTitle ( QApplication :: translate ( "Href_Gui" ,   "Url / www" ,   0 ) ) ;
    label -> setText ( QApplication :: translate ( "Href_Gui" ,   "Text:" ,   0 ) ) ;
    label_2 -> setText ( QApplication :: translate ( "Href_Gui" ,   "Url:" ,   0 ) ) ;
    label_3 -> setText ( QApplication :: translate ( "Href_Gui" ,   "Target / Name:" ,   0 ) ) ;

  

QWorkspace已被棄用

這個類已經過時,在Qt4.3中被替換為QMdiArea。在Qt5中QWorkspace已被刪除。新的類與QWorkspace有類似的API,移植只涉及改變幾個方法、信號和槽的名字。

更換

#include <QWorkspace>

#include <QMdiAre>

  

QDrag問題

拖動功能的應用程序將需要一些調整。如:

QDrag *drag = new QDrag(event->widget());

在Qt5中將產生錯誤

error : no matching function for call to  'QDrag::QDrag(QWidget*)'

要解決這個附加組件,其中包括:

#include <QWidget>


 

qFindChildren已被棄用

這種方式會彈出一個錯誤:

error :  'qFindChildren' was not declared in  this scope

為了解決這個問題,將qFindChildren替換為findChildren,例如

    toString ( const  QObject * obj ,  int indentLevel )  const  {
    [... ]
        
         if  (m_children )  {
             QList <</span>QObject*> childlist = qFindChildren<</span>QObject*>(obj, QString());
    [... ]

替換

QList <</span>QObject*> childlist = qFindChildren<</span>QObject*>(obj, QString());

QList <</span>QObject*> childlist = obj->findChildren<</span>QObject*>(QString());

qVariantValue已被棄用

編譯器會出現

error :  'qVariantValue' was not declared in  this scope

此功能相當于的QVariant::value(value)。因此,如果指定QVariant val應改寫

QTime t  = qVariantValue <</span>QTime>(val);

QTime t  = val. value <</span>QTime>();

QTime用尖括號括起來,則告知編譯器QVariant將返回。但是,如果變量不是一個QVariable,則類型用尖括號括起來就不應該被使用(這樣做將導致一個模糊的編譯時錯誤)。所以指定的m_color(QColor類型),應改寫

s. setValue ( "color/favorite" , qVariantValue <</span>QColor>(m_color));


s. setValue ( "color/favorite" , m_color. value ( ) ) ;

qVariantCanConvert已被棄用

替換

    Q_ASSERT (qVariantCanConvert <</span>QString>(variant));
    Q_ASSERT (qVariantCanConvert <</span>QSize>(variant));
    Q_ASSERT (qVariantCanConvert <</span>QFont>(fontVariant));


    Q_ASSERT (variant. canConvert ( QMetaType :: QString ) ) ;
    Q_ASSERT (variant. canConvert ( QMetaType :: QSize ) ) ;
    Q_ASSERT (fontVariant. canConvert ( QMetaType :: QFont ) ) ;

  

Qt::escape已被棄用

  1. error :  'escape' is not a member of  'Qt'

所以應該更改下面代碼:

         if  (result  ==  QString ( ) )
            result  =  Qt :: escape (val. toString ( ) ) ;
         else
            result  =  Qt :: escape (result ) ;
         return result ;


         if  (result  ==  QString ( ) )
            result  =  QString (val. toString ( ) ). toHtmlEscaped ( ) ;
         else
            result  =  QString (result ). toHtmlEscaped ( ) ;
         return result ;

QDesktopServices::storageLocation已被棄用

    error :  'storageLocation' is not a member of  'QDesktopServices'
    error :  'DataLocation' is not a member of  'QDesktopServices'

使用QStandardPaths::StandardLocation,替換

QString path  = s. value ( "db.path" , QDesktopServices :: storageLocation ( QDesktopServices 
:: DataLocation ) ). toString ( ) ;

QString path  = s. value ( "db.path" ,QStandardPaths :: standardLocations (QStandardPaths ::
 DataLocation ) ). toString ( ) ;


QtMutimedia替換了Phonon

音頻、視頻已不再使用  phonon,  如果你還在研究phonon,那么你已經out了!好好研究一下  QMediaPlayer、QMediaMetaData ...吧!


CONFIG += qtestlib已被棄用

如果在項目文件中使用,則編譯器會發出警告,盡管如此代碼將照常運行:

Project WARNING : CONFIG +=qtestlib is deprecated.  Use  QT +=testlib instead.


  

QWeakPointer怪異

如下代碼

    quint64 decodedPointer  = line. toULongLong ( ) ;
    MetaData  *md  =  reinterpret_cast <</span>MetaData*>(decodedPointer);
    QWeakPointer <</span>MetaData> wp(md);


結果

error : no matching function  for call to  'QWeakPointer::QWeakPointer(MetaData*&)'



為了解決這個問題,將下面代碼添加到項目文件:

DEFINES  += QT_DISABLE_DEPRECATED_BEFORE = 0


QtConcurrent庫的失蹤了?

C:\Qt\Qt5.0.2\5.0.2\mingw47_32\include\QtConcurrent\qtconcurrentthreadengine.h:133: error:
 undefined reference to `_imp___ZN12QtConcurrent16ThreadEngineBaseD2Ev'


在Qt4中,QtConcurrent是QtCore的一部分,所以,沒有必要包括特定的頭。這已不再是用Qt5的情況下。如果源代碼如下

m_current  = QtConcurrent :: blockingMappedReduced (slices , functor , stitchReduce ,
QtConcurrent :: UnorderedReduce  ) ;


則將需要包含頭:

 #include <QtConcurrent/ QtConcurrent >


到項目文件,并添加下面一行:

LIBS  +=  - lQt5Concurrent


  

固定的#include <>頭

qtbase/bin/中存在一個“fixqt4headers.pl”這樣的Perl腳本。運行于Qt源代碼運行,為Qt組件糾正#include <>指令還要考慮模塊名稱。


插件加載

Q_EXPORT_PLUGIN,Q_EXPORT_PLUGIN2宏已經過時,新的宏為Q_PLUGIN_METADATA。新系統的優點是,它允許Qt 來查詢元數據的插件沒有實際dlopen'ing它。這極大地提高了插件系統的性能和可靠性。

新Q_PLUGIN_METADATA宏包含QObject的派生類中加載插件時返回的Q_OBJECT宏。它包含插件IID并指向一個包含插件元數據的json文件。json文件被編譯成插件,并不需要安裝。

例如如何改變插件可以通過查找補丁,改變GIF圖像格式的插件,請查看:http://qt.gitorious.org/qt/qtbase/commit/963b4c1647299fd023ddbe7c4a25ac404e303c5d .


部署的系統沒有使用C++11

當Qt的系統上安裝了C++11,建立從源代碼的Qt庫/框架鏈接,系統的C++ 11庫(libc++)。這意味著Qt庫/框架沒有部署到沒有安裝C++11(如out-of-the-box Mac OS X 10.6)的系統。為了能夠部署到系統僅支持較舊的C++標準(libstdc++),構建Qt源代碼沒有C++11配置選項。




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

车致| 抚宁县| 延川县| 海宁市| 阿拉善左旗| 金寨县| 新民市| 岫岩| 江安县| 平果县| 龙岩市| 博客| 黑河市| 大新县| 渭南市| 额济纳旗| 新巴尔虎左旗| 夏津县| 文昌市| 常熟市| 象山县| 榆社县| 永定县| 启东市| 海原县| 波密县| 阳高县| 淮安市| 丹东市| 张家川| 页游| 山阴县| 泊头市| 黎平县| 莒南县| 平遥县| 锦屏县| 盘山县| 麻栗坡县| 岳阳县| 于田县|