在Qt问题中检测屏幕旋转

时间:2011-08-12 08:09:24

标签: c++ qt screen-rotation

我想对屏幕旋转做一些更改,应该从这里处理应该处理此类事件的方法的代码

http://www.developer.nokia.com/Community/Wiki/CS001437_-_Listening_for_screen_orientation_changes_in_Qt

编辑:我有一个滚动区域,它的旋转边框如何调整其大小?所以它可以适合屏幕plz检查下面的事件处理程序 这是我的整个代码:

//FORM1.CPP
#include "form1.h"
#include "ui_form1.h"
#include "form.h"
#include "ui_form.h"
#include <QResizeEvent>



Form1::Form1(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form1)
{
    ui->setupUi(this);
}

Form1::~Form1()
{
    delete ui;
}

//the method that is supposed to handle such event
void Form1::resizeEvent (QResizeEvent* event)
{
    QWidget::resizeEvent(event);
    ui->textBrowser->setText("karim");
}

我收到了这个错误:

\Users\user\Desktop\karim\Qt\Project\form1.cpp:31: error: 'QMyWidget' has not been declared

请注意我没有做任何其他事情这是我的整个代码...... 你能告诉我什么是错的或者没有得到什么?

请具体我会很感激...

2 个答案:

答案 0 :(得分:2)

您必须创建广告位

connect(qApp->desktop(), SIGNAL(resized(int)), this, SLOT(onResized(int)));

并实现它:

void Widget::onResized(int)
{
    QDesktopWidget* screen = qApp->desktop();   
    QSize displaySize;
    if (screen) {
        displaySize = screen->screenGeometry().size();
        if (displaySize != this->size()) {
            this->resize(displaySize);
        }
    }
}

答案 1 :(得分:0)

除了以下行之外,我没有看到您对QMyWidget课程的任何引用。可能是我错过了什么。但是,如果您已在其他地方定义了QMyWidget类,则至少需要包含标题。

void QMyWidget::resizeEvent(QResizeEvent* event)
{
    ui->labelk->setText("blabla");
}

可能是你的意思而不是上述内容:

void Form1::resizeEvent(QResizeEvent* event)
{
    ui->labelk->setText("blabla");
}

更新评论:您可以尝试这样做。

void Form1::resizeEvent(QResizeEvent* event)
{
    // call the base class for the default behavior
    QWidget::resizeEvent(event);
    // Add your custom changes here
    ui->labelk->setText("blabla");
}