2012-02-08 74 views
3

我負責一個擁有數十個窗口和數百種不同類型的小部件的大型(100 + KLOC)Qt應用程序。是否可以在不重寫代碼的情況下重新調整Qt GUI?

今天,用戶問我是否有什麼辦法可以使一些應用程序的大窗戶的適合他的13" 筆記本電腦的顯示屏上更好。

當然也有辦法讓窗口更節省空間,重新組織GUI以允許更多的顯示/隱藏各種東西,使用更小的字體等等......但我認爲他真正想要的是一種簡單地將整個窗口按一定百分比縮小的方式....一個類似於Apple的Expose的功能,或者一些VNC客戶端的功能。

所以我的問題是...有沒有什麼辦法可以告訴Qt按x%縮小整個窗口,不是涉及修改/重新設計大部分代碼庫?我知道QPainter有一個setScale()方法,而QGraphicsView允許很好的全局縮放,但我的應用程序是QWidgets的層次結構,所以我需要一種擴展整個層次結構的方法,而不僅僅是在特定的QWidget中進行縮放帆布。

+0

我不知道這是否是一個選項,但他們可以在VirtualBox中運行您的應用程序,然後使用VirtualBox的縮放功能來使其達到所需的任何大小。 – 2012-02-08 07:30:37

回答

0

使用樣式表可以修改小部件的邊距和間距,可以將字體更改爲較小。其他任何事情都可能需要您重新考慮UI設計。

0

我不知道你的主要程序和您正在使用的圖形用戶界面,但假設你使用基於QMainWindow中的GUI這會工作:

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    Window w; 
    w.show(); 

w.resize(new_width, new_height); 

return a.exec(); 
} 

與窗口:

namespace Ui { 
    class Window; 
} 

class Window : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit Window(QWidget *parent = 0); 
    ~Window(); 

private: 
    Ui::Window *ui; 
}; 

假設您使用的是QML,在顯示qml文件的責任類中有相同的方法。

相關問題