Symbole in der Toolbar
Symbole in der Toolbar
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
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
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:
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
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:)
2. Mir fehlen u. a. die Icons Importieren und Speichern als. Kriegt man die noch irgendwo?
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
Puh... ich fürchte gar nicht. Es gibt lediglich einen offenen Bug:mkdir hat geschrieben:1. Ich arbeite mit dem Qt Designer. Wie stelle ich das denn im Designer ein?
https://bugreports.qt-project.org/browse/QTBUG-2030
Du kannst die Icons dann ja in deiner Anwendung explizit setzen.
Ich kann dir jetzt nicht sagen wie das genau aussieht, aber das hört sich schon mal danach an:mkdir hat geschrieben:2. Mir fehlen u. a. die Icons Importieren und Speichern als. Kriegt man die noch irgendwo?
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
So, habe das ganze jetzt noch mal ausprobiert (ui->f ist das betreffende QAction-Element):
Folgender Fehler:
Code: Alles auswählen
ui->f->setIcon(QStyle::SP_DialogOpenButton);
../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
Naja dein enum ist nur irgendeine ID, nicht dein echtes Icon. Du musst das Icon über den Style der Anwendung abfragen. In etwa so: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);
Code: Alles auswählen
Icon myIcon = qApp->style()->standardIcon( QStyle::SP_MediaStop ), "Stop", &app, SLOT(quit()) );
ui->f->setIcon( myIcon );
Re: Symbole in der Toolbar
Jaaaaaaaaaaaaaaaa! Es funktioniert!
Daaaaanke für deine Hilfe!
Code: Alles auswählen
ui->f->setIcon(qApp->style()->standardIcon(QStyle::SP_DialogOpenButton));
Re: Symbole in der Toolbar
Hehe kein Problemmkdir hat geschrieben:Daaaaanke für deine Hilfe!
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