ungewollte, minimale Fensterbreite seit Qt4.4.3

Alles rund um die Programmierung mit Qt
Antworten
s-valve
Beiträge: 87
Registriert: 1. April 2007 15:03
Kontaktdaten:

ungewollte, minimale Fensterbreite seit Qt4.4.3

Beitrag von s-valve »

Hallo,

ich habe folgendes Problem:

Seit ich Qt4.4.3 verwende, hat meine Applikation eine Mindestbreite von 1146 Pixel. Das Problem besteht nicht mit der Qt 4.3.4. Version.

Ich nutze zwei Arten mein Hauptfenster zu positionieren und in der Größe zu ändern.
Variante 1 nutzt setGeometry, was auch erstmal per Buttonklick funktioniert. Versuche ich das Fenster dann aber über den Anfasser in Breite/Länge zu verändern, wird die Breite sofort auch 1146 gesetzt (größer ziehen geht).

Code: Alles auswählen

m_MainWindow->setGeometry(0, 25, 400, 300);
Variante zwei nutzt resize() und move(), was auf dem Mac etwas besser funktionierte. (Habe Probleme mit x,y auf Unix-Systemem und insbesondere mit der Menüleiste bei Mac OS.) Die resize() Funktion hat auf die Breite keine Auswirkung. Die Werte lese ich aus einer .ini Datei aus und bei Prüfung über einen Dialog stimmen diese auch.

Code: Alles auswählen

m_MainWindow->resize(w.toInt(&ok, 10), h.toInt(&ok, 10));
m_MainWindow->move(QPoint(x.toInt(&ok, 10), y.toInt(&ok, 10)));
Gibt es irgendwelche Infos, dass mit Qt4.4 etwas geändert wurde oder kennt jemand von euch ein solches Problem?

Gruß,
M


P.S.: Hier noch mal der Code zur Erstellung meines Hauptfensters. Der einzige Punkt an dem Größe und Position von meinem Code beeinflusst werden, ist die prefDialog.cpp und dort auch nur in resetPrefDialog() und openPref() - Code siehe oben Variante 1 und 2.

Code: Alles auswählen

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
//Application information
  
//set window icon, name and title
  setWindowIcon(QIcon(":/images/icon.png"));
  setObjectName(PROJECT_NAME);
  setWindowTitle(PROJECT_NAME);

//create pageCtrl1 as central widget
  pageCtrl1 = new PageCtrl(this);
  setCentralWidget(pageCtrl1);
  
  setAcceptDrops(true);
  
  
/*create ToolBars does not work correctly - bec. TB is not connected to window
  toolBarMain = new QToolBar(tr("toolBarMain") ,this);
  toolBarAWL  = new QToolBar(tr("toolBarAWL") ,this);
  toolBarSAWL = new QToolBar(tr("toolBarSAWL") ,this);
  toolBarST   = new QToolBar(tr("toolBarST") ,this);
*/
         
//call main window create fcn.s
  createActions();
  createMenus();
  createToolBars();
  createStatusBar();
  retranslateUi();

//prepare dialogs & needed start-up fcn.s
  findDialog = 0;
  FcnTypeStr = "";

  prototype 		= new Prototype(pageCtrl1);
  printPrepare 		= new PrintPrepare(pageCtrl1, prototype);
  importExport 		= new ImportExport(pageCtrl1, prototype);
  fileViewDialog 	= new FileViewDialog(this, importExport); 
  sessionManager 	= new SessionManager(this, pageCtrl1, importExport);   
  pouInfoDialog  	= new POUInfoDialog(this, pageCtrl1, prototype, importExport);
  findDialog  		= new FindDialog(this, pageCtrl1);
  fcnDialog  		= new FcnDialog(this);  
    
  //load settings from preferences file
  prefDialog = new PrefDialog(this, pageCtrl1, sessionManager, importExport, printPrepare, pouInfoDialog, fileViewDialog, findDialog, fcnDialog);
  if (prefDialog->openPref() == -1)
  {  
    prefDialog->resetPrefDialog();
    prefDialog->savePref();
    prefDialog->openPref();
    QMessageBox::critical(this, PROJECT_NAME + " " + msg_head_preferror, msg_text_preferror);
  }
 

  //connect diverse slots
  #ifdef Q_WS_WIN	
  connect(singleApp, SIGNAL(messageReceived(QString)), SLOT(openFile(QString)));
  #endif
  //draw toolbars in brushed matal on Mac OS X
  #ifdef Q_WS_MAC
    this->setUnifiedTitleAndToolBarOnMac(true); 
  #endif

  connect(importExport, SIGNAL(modified()), this, SLOT(updateStatusBar()));
}


MainWindow::~MainWindow()
{ //virtual destructor

  //call preferences dialog to save all settings	
  sessionManager->saveFilesAsSession();
  #ifdef Q_WS_MAC
    move(QPoint(pos().x(), pos().y()-43)); //workaround for false y-value during ini-save at quit application on Mac OS
  #endif
  #ifdef Q_OS_LINUX
    move(QPoint(pos().x(), pos().y()-43)); //workaround for false y-value during ini-save at quit application on Linux
  #endif
  prefDialog->savePref();
  //delete all created dialogs
  delete prefDialog;
  delete findDialog;
  delete pouInfoDialog;
  delete sessionManager;
  delete fileViewDialog;
  delete importExport;
  delete printPrepare;
  delete prototype;
  delete pageCtrl1;
}
Zuletzt geändert von s-valve am 15. November 2008 14:30, insgesamt 2-mal geändert.
s-valve
Beiträge: 87
Registriert: 1. April 2007 15:03
Kontaktdaten:

Teillösung

Beitrag von s-valve »

Hallo,

ich konnte jetzt per Zufall den Bösewicht vlt. etwas eingrenzen.
Offensichtlich mag meine Kompilierung von Qt4.4.3 folgende Definition aus dem obigen Codefragment für mainwindow nicht so richtig:

Code: Alles auswählen

  #ifdef Q_WS_MAC 
    this->setUnifiedTitleAndToolBarOnMac(true); 
  #endif
Wenn ich es auskommentiere ist mein Fesnter wieder problemlos in der Breite einstellbar. Laut Doku scheine ich jedoch keine Fehler gemacht zu haben... :(
s-valve
Beiträge: 87
Registriert: 1. April 2007 15:03
Kontaktdaten:

:(

Beitrag von s-valve »

Das Problem besteht weiterhin, auch in Qt 4.5.1. Jemand eine Idee?
Mich ärgert das, denn Qt4.3.5 hat dieses Probelm so nicht und für meine App würde ich neben dem brushed Metal look unter Mac OS einige neue Features von Qt4.5.x nutzen :(


Grüße
Antworten