是否可以在不重写代码的情况下重新调整Qt GUI?

时间:2012-02-08 07:21:52

标签: qt resolution-independence

我负责一个大型(100 + KLOC)Qt应用程序,其中包含数十个窗口和数百种不同类型的小部件。

今天,一位用户问我是否有办法让他的13英寸笔记本显示器上的某些应用程序的大窗户更合适。

当然有一些方法可以让窗户更节省空间,重新组织GUI以允许更多地显示/隐藏各种东西,使用更小的字体等等......但我认为他真正想要的是一个简单地将整个窗口按比例缩小一定百分比的方式......就像Apple的Expose所做的那样,或者一些VNC客户端做的事情。

所以我的问题是......有没有办法告诉Qt将整个窗口缩小x%涉及修改/重新设计大部分代码库?我知道QPainter有一个setScale()方法,而QGraphicsView允许很好的全局扩展,但我的应用程序是QWidgets的层次结构,所以我需要一种方法来扩展整个层次结构,而不仅仅是在特定的QWidget中扩展画布。

2 个答案:

答案 0 :(得分:0)

使用样式表可以修改窗口小部件的边距和间距,可以将字体更改为更小。其他任何东西都可能需要你重新考虑UI设计。

答案 1 :(得分:0)

我不知道您正在使用的主程序和GUI,但假设您正在使用基于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();
}

使用Window:

namespace Ui {
    class Window;
}

class Window : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::Window *ui;
};

假设您使用的是QML,则负责类中显示qml文件的方法相同。