Seite 1 von 1

[gelöst] Grundlagenproblem (Gnome 3.4)

Verfasst: 6. November 2012 22:03
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)" );

}

Re: Grundlagenproblem

Verfasst: 7. November 2012 12:49
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

Re: Grundlagenproblem

Verfasst: 7. November 2012 13:35
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

Re: Grundlagenproblem

Verfasst: 7. November 2012 19:01
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]

Re: Grundlagenproblem

Verfasst: 7. November 2012 19:06
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.

Re: Grundlagenproblem

Verfasst: 7. November 2012 20:08
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

Re: Grundlagenproblem

Verfasst: 7. November 2012 20:38
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.

Re: Grundlagenproblem

Verfasst: 7. November 2012 20:55
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.

Re: Grundlagenproblem

Verfasst: 8. November 2012 14:21
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

Re: Grundlagenproblem

Verfasst: 8. November 2012 18:41
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

Re: Grundlagenproblem

Verfasst: 8. November 2012 21:31
von Christian81
Nochmal: Die Fenster-Deko hat nichts mit Qt zu tun sondern mit den von Dir benutzten Style!

Re: Grundlagenproblem

Verfasst: 9. November 2012 17:26
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
}