Personne n'a d'idee ? Bon j'ai recopie un code qui fonctionne :
Code :
- #include <QApplication>
- #include <QAction>
- #include <QMainWindow>
- #include <QLineEdit>
- #include <QToolBar>
- #include <QHBoxLayout>
- void initWindow(QMainWindow* w);
- int main(int argc, char *argv[])
- {
- Q_INIT_RESOURCE(application);
- QApplication app(argc, argv);
- QMainWindow mainWin;
- initWindow(&mainWin);
- mainWin.show();
- return app.exec();
- }
- void initWindow(QMainWindow* w)
- {
- QLineEdit* searchBar = new QLineEdit;
- QAction* newAct = new QAction(QIcon(":/images/new.png" ), "&New", w);
- newAct->setShortcuts(QKeySequence::New);
- QAction* openAct = new QAction(QIcon(":/images/open.png" ), "&Open...", w);
- openAct->setShortcuts(QKeySequence::Open);
- QAction* saveAct = new QAction(QIcon(":/images/save.png" ), "&Save", w);
- saveAct->setShortcuts(QKeySequence::Save);
- QAction* cutAct = new QAction(QIcon(":/images/cut.png" ), "Cu&t", w);
- cutAct->setShortcuts(QKeySequence::Cut);
- QAction* copyAct = new QAction(QIcon(":/images/copy.png" ), "&Copy", w);
- copyAct->setShortcuts(QKeySequence::Copy);
- QAction* pasteAct = new QAction(QIcon(":/images/paste.png" ), "&Paste", w);
- pasteAct->setShortcuts(QKeySequence::Paste);
- QToolBar* fileToolBar = w->addToolBar("File" );
- fileToolBar->addAction(newAct);
- fileToolBar->addAction(openAct);
- fileToolBar->addAction(saveAct);
- QToolBar* editToolBar = w->addToolBar("Edit" );
- editToolBar->addAction(cutAct);
- editToolBar->addAction(copyAct);
- editToolBar->addAction(pasteAct);
- editToolBar->addWidget(searchBar);
- }
|
mais le probleme c'est que ca ne marche que pour des toolbar dans une QMainWindow. Or dans le code sur lequel je travaille je dois faire ca dans un QWidget et je ne peux donc pas ajouter de toolbar directement en appelant la methode "addToolbar" mais en passant par un layout. Voici le code de test que j'ai tape pour reproduire la situation dans laquelle je me trouve :
Code :
- #include <QApplication>
- #include <QtGui/QWindow>
- #include <QToolbar>
- #include <QVBoxLayout>
- #include <QMainWindow>
- #include <QPushButton>
- #include <QAction>
- #include <QIcon>
- #include <QLineEdit>
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
- QWidget* w = new QWidget;
- QHBoxLayout* tb1 = new QHBoxLayout;
- tb1->addWidget(new QPushButton("item11" ));
- tb1->addWidget(new QPushButton("item12" ));
- tb1->addWidget(new QPushButton("item13" ));
- tb1->addWidget(new QPushButton("item14" ));
- QHBoxLayout* spacerLayout = new QHBoxLayout;
- spacerLayout->addSpacerItem(new QSpacerItem(50, 20, QSizePolicy::MinimumExpanding,QSizePolicy::Fixed) );
- spacerLayout->setAlignment(Qt::AlignJustify);
- QWidget* sep = new QWidget;
- QRect rect = sep->geometry();
- rect.setWidth(0);
- sep->setGeometry(rect);
- QToolBar* tb3 = new QToolBar;
- QLineEdit* searchBar = new QLineEdit;
- QAction* item31 = new QAction(QIcon(":/images/cut.png" ), "cut" );
- QAction* item32 = new QAction(QIcon(":/images/copy.png" ), "copy" );
- QAction* item33 = new QAction(QIcon(":/images/open.png" ), "open" );
- QAction* item34 = new QAction(QIcon(":/images/paste.png" ), "past" );
- QAction* item35 = new QAction(QIcon(":/images/save.png" ), "save" );
- tb3->addWidget(sep);
- tb3->addWidget(searchBar);
- tb3->addAction(item31);
- tb3->addAction(item32);
- tb3->addAction(item33);
- tb3->addAction(item34);
- tb3->addAction(item35);
- QVBoxLayout* mainLayout = new QVBoxLayout;
- QHBoxLayout* topLayout = new QHBoxLayout;
- topLayout->addLayout(tb1);
- topLayout->addLayout(spacerLayout);
- topLayout->addWidget(tb3);
- QHBoxLayout* bottomLayout = new QHBoxLayout;
- bottomLayout->addWidget(new QPushButton);
- mainLayout->addLayout(topLayout);
- mainLayout->addLayout(bottomLayout);
- w->setLayout(mainLayout);
- w->show();
- return app.exec();
- }
|
Ca fonctionne bien pour les QAction mais pas pour la QLineEdit, c'est a dire que lorsque je clique sur la fleche pour afficher la liste des widgets qui ont ete cachees apres avoir reduit la largeur de la fenetre, je vois tous les QAction mais pas le QLineEdit.
Quelqu'un aurait une idee d'ou vient le probleme ? Merci.
Edit : Pour mieux visualiser la chose j'ai fais des captures ecrans de mon 2eme test :
Avant redimensionnement :
Apres avoir redimensionne, les icones en trop disparaissent, je clique donc sur la fleche pour les afficher dans la liste deroulante : elles s'affichent toutes sauf la QLineEdit :
Message édité par petipoi le 15-11-2016 à 15:30:42