Archived:Handle change in screen orientation in Qt
hamishwillee
(Talk | contribs) m (Hamishwillee - Fix categories) |
hamishwillee
(Talk | contribs) m (Hamishwillee - Bot update - Fix ReviewerApproval and ArticleMetaData etc) |
||
| Line 1: | Line 1: | ||
| − | [[ | + | {{Archived|timestamp=20120213040924|user=[[User:Hamishwillee|<br />----]]|[[:Category:Qt Quick|Qt Quick]] should be used for all UI development on mobile devices. The approach described in this article (based on {{Qapiname|QWidget}}) is deprecated.}} |
| − | {{ | + | [[Category:QWidget UI]][[Category:UI]] |
| − | {{ArticleMetaData | + | |
| − | + | {{ArticleMetaData <!-- v1.1 --> | |
| − | + | |sourcecode= [[Media:QtResizeEvent.zip]] | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | |sourcecode= | + | |
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> | |installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> | ||
| − | |sdk=<!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> | + | |devices= Nokia 5800 XpressMusic |
| − | |devicecompatability=<!-- Compatible devices (e.g.: All* (must have GPS) ) --> | + | |sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> |
| − | |signing=<!-- Empty or one of Self-Signed, DevCert, Manufacturer --> | + | |platform= S60 3rd Edition, FP1, FP2<br>S60 5th Edition |
| − | |capabilities=<!-- Capabilities required (e.g. Location, NetworkServices.) --> | + | |devicecompatability= <!-- Compatible devices (e.g.: All* (must have GPS) ) --> |
| − | |author=[[User:Savaj]] | + | |dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 --> |
| + | |signing= <!-- Empty or one of Self-Signed, DevCert, Manufacturer --> | ||
| + | |capabilities= <!-- Capabilities required (e.g. Location, NetworkServices.) --> | ||
| + | |keywords= QWidget::resizeEvent() | ||
| + | |id= <!-- Article Id (Knowledge base articles only) --> | ||
| + | |language= <!-- Language category code for non-English topics - e.g. Lang-Chinese --> | ||
| + | |translated-by= <!-- [[User:XXXX]] --> | ||
| + | |translated-from-title= <!-- Title only --> | ||
| + | |translated-from-id= <!-- Id of translated revision --> | ||
| + | |review-by= <!-- After re-review: [[User:username]] --> | ||
| + | |review-timestamp= <!-- After re-review: YYYYMMDD --> | ||
| + | |update-by= <!-- After significant update: [[User:username]]--> | ||
| + | |update-timestamp= <!-- After significant update: YYYYMMDD --> | ||
| + | |creationdate= 20090626 | ||
| + | |author= [[User:Savaj]] | ||
| + | <!-- The following are not in current metadata --> | ||
| + | |subcategory= UI | ||
| + | |category= Qt | ||
}} | }} | ||
Revision as of 07:09, 13 February 2012
Qt Quick should be used for all UI development on mobile devices. The approach described in this article (based on QWidget) is deprecated.
Article Metadata
Code Example
Tested with
Compatibility
S60 5th Edition
Article
The issue is in the example code's ResizeEvent::GetScreenCoordinates() method. The GetScreenCoordinates uses QDesktopWidget::availableGeometry and QDesktopWidget::screenGeometry methods. In all cases these methods do not reflect current screen geometry values during QWidget::resizeEvent call as the respective values are only changed after the resizeEvent has occured. This means that e.g. during the startup of the application these may return wrong values as the values are not yet set properly.
If the whole screen geometry information is needed from QDesktopWidget it's advised to connect to QApplication::desktop()'s workAreaResized(int) signal and call QApplication::desktop()->availableGeometry() in the connected slot function. This works in Qt 4.7.3 in Symbian but not (due to bug) in Qt 4.6.
See following bug report for more details. The QTBUG-14058's fix introduces documentation for QDesktopWidget on this issue.
In many cases application should however get simply the geometry of the main window using simply
QMainWindow::width() and ::height() methods during QMainWindow's resizeEvent.
Contents |
Overview
This code example shows how to get notification when the screen mode changes using QWidget::resizeEvent(). This method gets called when the screen mode changes, so you have to implement that virtual method in your class.
This snippet can be self-signed.
Preconditions
- Download and install the Qt SDK
Source
//resizeEvent() method get called when user change screen mode.
void ResizeEvent::resizeEvent (QResizeEvent* event)
{
QSize widgetSize = event->size();
//Resize your custom control according to new size.
QMainWindow::resizeEvent(event);
}
Postconditions
The code snippet is expected to notify change in screen mode.
Screen after changing mode to portrait
Related link
Download Code Example
- File:QtResizeEvent.zip shows new screen size when user change screen mode. This example is tested on Nokia 5800 XpressMusic.

