[gelöst] Grundlagenproblem (Gnome 3.4)

Alles rund um die Programmierung mit Qt
Antworten
KuhTee
Beiträge: 30
Registriert: 3. November 2012 09:17

[gelöst] Grundlagenproblem (Gnome 3.4)

Beitrag von KuhTee »

Hallo,
ich mache gerade die ersten Qt-Gehversuche.

Ich habe eine Qt-Gui Anwendung erstellt.
Nur ein Button. Wenn dieser gedrückt wird soll die Dateiauswahl eerscheinen.
Wenn ich das Programm starte, sehe ich das einfache Fenster mit dem Button. Das Fenster ist skalierbar. D.h. die Breite der Fensterüberschrift wird an die Breite angepasst.
Drücke ich den Button erscheint die Dateiauswahl. Aber die Fensterüberschrift erscheint nicht auf voller Breite. Bei ändern der Fenstergröße scheint die Fensterüberschrift immer gleich Breit zu bleiben.
Ferner kann das Dateiauswahlfenster nicht mit dem Knopf "Fenster schließen" beendet werden. Der Button "Abbrechen" geht.

Ich verwende: Qt-Creator 2.4.1, Ubuntu 64bit, Oberfläche Gnome 3.x

mainwindow.cpp

Code: Alles auswählen

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QFileDialog"

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

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

void MainWindow::on_pushButton_clicked()
{
    QString file = QFileDialog::getOpenFileName(0, "Dateiauswahl", "Dokumente (*.pdf *ps *doc)" );

}
Zuletzt geändert von KuhTee am 8. Dezember 2012 17:35, insgesamt 1-mal geändert.
jerry42
Beiträge: 126
Registriert: 9. Oktober 2008 10:48

Re: Grundlagenproblem

Beitrag von jerry42 »

Hi,
das ganze scheint ja noch sehr klein zu sein. Stell doch ein kompilierbares Beispiel hier rein.

Wenn ich einen QFileDialog öffne, kann ich problemlos mit "X" den Dialog schließen.
Das mit der Breite versteh ich nicht ganz wie du das meinst, da würde ein Beispiel auch helfen.

Aus dem geposteten Code kann ich nix rauslesen.

Gruß
jerry
KuhTee
Beiträge: 30
Registriert: 3. November 2012 09:17

Re: Grundlagenproblem

Beitrag von KuhTee »

Hallo,

ich lade heute Abend ein Bildschirmhardcopy und den restlichen Code hoch.

Könnte Gnome 3.x das Problem sein ?

Ich hatte gerstern Abend die Gnomeoberfläche im "Classic"-Modus gestart und das kleine Programm ausgeführt. Alles sieht gut aus und das Fenster läßt sich schließen.

Heute bin ich beim googlen über "qgtkstyle" gestolpert. Hilft das evtl. weiter ? Läuft Qt4 unter Gnome 3.x nicht richtig ?

Bis später
KuhTee
KuhTee
Beiträge: 30
Registriert: 3. November 2012 09:17

Re: Grundlagenproblem

Beitrag von KuhTee »

Hier ein Bildschirmhardcopy, und das bischen Quellcode.

Das erste Fenster sieht gut aus.
Das zweite funktioniert nicht. Siehe Hardcopy.

Hat schon jemand Qt4-Anwendungen für Gnome 3.4 programmiert ?

Gruß
KuhTee

main.cpp

Code: Alles auswählen

#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}
mainwindow.cpp

Code: Alles auswählen

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QFileDialog"

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

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

[b]mainwindow.h[/b]
[code]#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H
void MainWindow::on_pushButton_clicked()
{
QString file = QFileDialog::getOpenFileName(0, "Dateiauswahl", "Dokumente (*.pdf *ps *doc)" );

}[/code]
Dateianhänge
bild4.png
bild4.png (170.79 KiB) 6333 mal betrachtet
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Grundlagenproblem

Beitrag von Christian81 »

Das ist der native - FileOpen - Dialog von GTK und auch dessen Style. Frag also die GTK-Leute warum deren Style so besch**** ist...

/edit: Und den Screenshot hätte man auch kleiner hinbekommen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
KuhTee
Beiträge: 30
Registriert: 3. November 2012 09:17

Re: Grundlagenproblem

Beitrag von KuhTee »

Hey,
das Problem "Kopfzeile hat nicht die volle Breite" und "Fenster läßt sich nicht mit Button schließen" tritt auch bei verschiedenen "Demos und Beispielen" auf. Zum Beispiel beim dem Demo "Main Window".
Programm gestartet. --> File -->Load Layout

Handelt es sich um Gnomeproblem ?
Fehlt mir eine LIB ?

Wie schon beschrieben gibt das Problem nicht im Gnome-Classic-Modus.

Ahoi
KuhTee
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Grundlagenproblem

Beitrag von Christian81 »

Ok nocheinmal: Der File-Open-Dialog den Du verwendest (und auch bei den Demos verwendet wird, siehe auch Doku zu QFileDialog) ist der GTK/Gnome - Dialog. Da hat Qt nichts mit zu tun. Mit der Win-Deco hat Qt allgemein nichts zu tun sondern der verwendete Window-Manager.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
KuhTee
Beiträge: 30
Registriert: 3. November 2012 09:17

Re: Grundlagenproblem

Beitrag von KuhTee »

Hey, mein Problem hat nichts mit dem Filedialog zu tun.

Ich habe gerade aus den "Demos und Beispielen" "Application Example" ausprobiert.

Programm starten --> Help --> About

Es geht ein Fenster auf. Die Kopfzeile hat nicht die volle Breite. Der Button "Fenster schließen" hat keine Funktion.
jerry42
Beiträge: 126
Registriert: 9. Oktober 2008 10:48

Re: Grundlagenproblem

Beitrag von jerry42 »

naja wie Christian schon meinte ist das wohl eine Gtk/Gnome Sache.

"About" ruft ja auch nur einen Dialog auf. Zwar keinen FileDialog, aber dennoch ein Dialog.

Was für eine Distribution benutzt du denn?
Hab hier auf meinem Rechner nur Gnome 2.x.

Gruß
jerry
KuhTee
Beiträge: 30
Registriert: 3. November 2012 09:17

Re: Grundlagenproblem

Beitrag von KuhTee »

Hallo,
genau "About" ruft nur einen Dialog auf.

Vielleicht ist es gar kein Fehler bzw. Problem ?

Rechner: Ubuntu 12.04 - Gnome 3.4 - Qt 4.8

Kann es sein das die Fensterkopfzeile und der zugehörige Fensterschließenbutton zum aufrufenden Fenster gehören ?

Werden Folgedialoge evtl. standardmäßig unter Gnome 3.x ohne eigene Kopfzeile angezeigt ?

Im Classic-Modus bzw. unter Windows wird jedoch die Kopfzeile angezeigt.

Grüße
KuhTee
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Grundlagenproblem

Beitrag von Christian81 »

Nochmal: Die Fenster-Deko hat nichts mit Qt zu tun sondern mit den von Dir benutzten Style!
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
KuhTee
Beiträge: 30
Registriert: 3. November 2012 09:17

Re: Grundlagenproblem

Beitrag von KuhTee »

Hey, nun ist das "Problem" gelöst.

Unter Gnome 3.4 wird standardmäßig bei modalen Dialogen xyz->exec() keine Kopfzeile des neuen Fensters angezeigt.
Mit xyz->show() jedoch.

Bei den Oberflächen WIndows, Unity und Gnome-Classic wird auch bei modalen Dialogen die Kopfzeile angezeigt.

Abhilfe --> Gnome Einstellungen

Code: Alles auswählen

$ dconf-editor --> org --> gnome --> shell --> overrides --> attach-modal-dialogs --> false ( bzw. Haken entfernen )
Schon wird auch bei modalen Dialogen die Kopfzeile angezeigt.

Grüße
KuhTee

Code: Alles auswählen

void MainWindow::on_pushButton_clicked()
{
    // modaler Dialog
    QString file = QFileDialog::getOpenFileName(this, "Dateiauswahl", "Dokumente (*.pdf *ps *doc)");
}
void MainWindow::on_pushButton_2_clicked()
{
    // setWindowTitle("Hallo");
    QFileDialog *fd = new QFileDialog(this, "Dateiauswahl");
    QStringList liste;
    liste << "Dokumente (*.pdf *ps *doc)";

    fd->setFilters(liste);
    fd->setViewMode(QFileDialog::List);
    fd->setDirectory(QDir::currentPath());
    fd->setFileMode(QFileDialog::AnyFile);
    // fd->exec();
    // fd->setModal(false);
    fd->show(); // Jetzt wird auch der Test "Dateiauswahl" angezeigt
}
Antworten