3

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

今天,一位用户问我是否有任何方法可以使该应用程序的某些较大的窗口更适合他的 13 英寸笔记本电脑的显示屏。

当然有一些方法可以让窗口更节省空间,重新组织 GUI 以允许更多地显示/隐藏各种事物,使用更小的字体等等......但我认为他真正想要的是一种简单的方法将整个窗口均匀地缩小一定百分比....类似于 Apple 的 Expose 所做的效果,或某些 VNC 客户端所做的效果。

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

4

2 回答 2

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();
}

带窗口:

namespace Ui {
    class Window;
}

class Window : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::Window *ui;
};

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

于 2012-02-09T19:36:11.327 回答
0

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

于 2012-02-08T08:41:26.803 回答