首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QWidget::geometry()与QWidget::frameGeometry()

QWidget::geometry()与QWidget::frameGeometry()
EN

Stack Overflow用户
提问于 2013-01-27 02:23:26
回答 5查看 6.1K关注 0票数 5

尽管Qt's docs指出这两个函数是不同的(第一个函数不包括框架),但无论我选择什么小部件-包括应用程序的主窗口- someWidget->frameGeometry().height()总是返回与someWidget->geometry.height()相同的值。

这里我漏掉了什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-27 02:42:24

我认为,你没有给出足够的时间来绘制小部件。这里有几个例子:

代码语言:javascript
复制
#include <QApplication>
#include <QMainWindow>
#include <QDebug>

class MainWindow : public QMainWindow
{
public:
    MainWindow() {
        startTimer(500);
    }

    void timerEvent(QTimerEvent *e) {
        // Here values are different
        qDebug() << geometry().height() << frameGeometry().height();
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    MainWindow mainWin;
    mainWin.show();

    // Here values are equals
    qDebug() << mainWin.geometry().height() << mainWin.frameGeometry().height();

    return app.exec();
}

第一个调试输出将为geometryframeGeometry生成相同的值,但第二个调试输出(在timerEvent中)将生成不同的值。

票数 8
EN

Stack Overflow用户

发布于 2013-01-27 02:41:22

例如,QWidget没有框架,但QFrame有框架。

票数 1
EN

Stack Overflow用户

发布于 2016-03-12 02:55:06

如果QWidget是顶层窗口,那么你可以看到它周围的边框和标题栏。我们称它为框架或装饰框架,frameGeometry()返回的确切内容是:窗口大小和位置,包括OS几何,另一侧几何() returs内部矩形,这可用于其他子控件或painting.See http://doc.qt.io/qt-4.8/application-windows.html#window-geometry更多details.Toplevel几何()/ frameGeometry()不同,如果我们的窗口不是无框架或全屏...或者我们正在讨论x11下的一些无框架的窗口管理器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14540075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档