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

pla*_*ian 4 qt qt4

虽然Qt的文档表明这两个函数是不同的(第一个不包括框架),无论我选择哪个小部件 - 包括我的应用程序的主窗口 - someWidget->frameGeometry().height()总是返回相同的值someWidget->geometry.height().

我在这里错过了什么?

fas*_*ked 7

我想,你没有足够的时间来绘制小部件.没有什么例子:

#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();
}
Run Code Online (Sandbox Code Playgroud)

第一调试输出将产生相同的值geometryframeGeometry,但是第二(中timerEvent)将产生不同的.