Seite 1 von 1

Symbole in der Toolbar

Verfasst: Mi Dez 19, 2012 4:52 pm
von mkdir
Ich versuche mich momentan an einem ziemlich einfachen Projekt im QtCreator, bei dem sich eine Frage aufgetan hat: Wie schaffe ich es, dass die Symbole, die in der Toolbar angezeigt werden, die sind, die vom Icon-Kit, das in KDE/Gnome eingestellt wurde sind?
Ich könnte jetzt natürlich einfach als Pfad /usr/share/icons/<IRGENDEIN ICON-KIT>/... nehmen, aber wegen 2 Punkten bin ich mit dieser Lösung unzufrieden:

1. Ich möchte, dass sich mein Programm einigermaßen ins System einbindet, sprich, dass die Icons so aussehen, wie der Benutzer es will.
2. Ich versuche, meine Programme möglichst os-unabhängig schreiben, unter Mac OS X gibt es diesen Pfad nicht und unter Windows wäre der Pfad sowieso falsch angegeben (Laufwerksbuchstaben, Backslash statt Slash, usw...)

mkdir

Re: Symbole in der Toolbar

Verfasst: Mi Dez 19, 2012 5:21 pm
von nufan
Hallo und willkommen im Forum :)

Du hast in QStyle ein enum, mit dem du auf ein paar Default-Icons zugreifen kannst:
http://qt-project.org/doc/qt-5.0/qtwidg ... ixmap-enum

Ich kann das grade leider nicht ausprobieren, aber so "sollte" es gehen:

Code: Alles auswählen

#include <QtWidgets/QMainWindow>
#include <QApplication>
#include <QToolBar>
#include <QAction>
#include <QStyle>

int main( int argc, char *argv[] )
{
    QApplication app( argc, argv );
    QMainWindow mw;
    QToolBar *tb = new QToolBar( "MyToolBar" );
    tb->addAction( app.style()->standardIcon( QStyle::SP_MediaStop ), "Stop", &app, SLOT(quit()) );
    mw.addToolBar( tb );
    return app.exec();
}

Re: Symbole in der Toolbar

Verfasst: Mi Dez 19, 2012 5:44 pm
von mkdir
Danke für die schnelle Antwort! :)

Zwei Fragen noch:
1. Ich arbeite mit dem Qt Designer. Wie stelle ich das denn im Designer ein? (Der kompilierte Code sieht dann z. B. so aus:

Code: Alles auswählen

/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created: ...
**      by: Qt User Interface Compiler version 4.8.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
******************************************************************************* */

...

public: QAction *actionImportieren;

...

actionImportieren = new QAction(MainWindow);
        actionImportieren->setObjectName(QString::fromUtf8("actionImportieren"));
        QIcon icon1(QIcon::fromTheme(QString::fromUtf8("gtk-open")));
        actionImportieren->setIcon(icon1);
)

2. Mir fehlen u. a. die Icons Importieren und Speichern als. Kriegt man die noch irgendwo?

Re: Symbole in der Toolbar

Verfasst: Mi Dez 19, 2012 5:50 pm
von nufan
mkdir hat geschrieben:1. Ich arbeite mit dem Qt Designer. Wie stelle ich das denn im Designer ein?
Puh... ich fürchte gar nicht. Es gibt lediglich einen offenen Bug:
https://bugreports.qt-project.org/browse/QTBUG-2030
Du kannst die Icons dann ja in deiner Anwendung explizit setzen.
mkdir hat geschrieben:2. Mir fehlen u. a. die Icons Importieren und Speichern als. Kriegt man die noch irgendwo?
Ich kann dir jetzt nicht sagen wie das genau aussieht, aber das hört sich schon mal danach an:
QStyle::SP_DialogOpenButton: Icon for a standard Open button in a QDialogButtonBox.
QStyle::SP_DialogSaveButton: Icon for a standard Save button in a QDialogButtonBox.
Oder sind die schon vergeben?

Re: Symbole in der Toolbar

Verfasst: Mi Dez 19, 2012 6:14 pm
von mkdir
So, habe das ganze jetzt noch mal ausprobiert (ui->f ist das betreffende QAction-Element):

Code: Alles auswählen

ui->f->setIcon(QStyle::SP_DialogOpenButton);
Folgender Fehler:
../test/mainwindow.cpp: In constructor 'MainWindow::MainWindow(QWidget*)':
../test/mainwindow.cpp:9:47: error: no matching function for call to 'QAction::setIcon(QStyle::StandardPixmap)'
../test/mainwindow.cpp:9:47: note: candidate is:
/usr/include/qt4/QtGui/qaction.h:117:10: note: void QAction::setIcon(const QIcon&)
/usr/include/qt4/QtGui/qaction.h:117:10: note: no known conversion for argument 1 from 'QStyle::StandardPixmap' to 'const QIcon&'

Re: Symbole in der Toolbar

Verfasst: Mi Dez 19, 2012 6:19 pm
von nufan
mkdir hat geschrieben:So, habe das ganze jetzt noch mal ausprobiert (ui->f ist das betreffende QAction-Element):

Code: Alles auswählen

ui->f->setIcon(QStyle::SP_DialogOpenButton);
Naja dein enum ist nur irgendeine ID, nicht dein echtes Icon. Du musst das Icon über den Style der Anwendung abfragen. In etwa so:

Code: Alles auswählen

Icon myIcon = qApp->style()->standardIcon( QStyle::SP_MediaStop ), "Stop", &app, SLOT(quit()) );
ui->f->setIcon( myIcon );
"qApp" ist ein globaler Zeiger auf deine QApplication-Instanz. Diese wird automatisch angelegt, du musst aber den QApplication-Header includieren.

Re: Symbole in der Toolbar

Verfasst: Mi Dez 19, 2012 6:23 pm
von mkdir
Jaaaaaaaaaaaaaaaa! Es funktioniert!

Code: Alles auswählen

ui->f->setIcon(qApp->style()->standardIcon(QStyle::SP_DialogOpenButton));
Daaaaanke für deine Hilfe! :D

Re: Symbole in der Toolbar

Verfasst: Mi Dez 19, 2012 6:27 pm
von nufan
mkdir hat geschrieben:Daaaaanke für deine Hilfe! :D
Hehe kein Problem :)

Wenn du magst kannst du dich hier vorstellen:
http://www.proggen.org/forum/viewforum.php?f=41
Und beschreiben wer du bist und wie du uns gefunden hast :)