Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : [Qt] MAJ StatusBar suvant Tabidget [ Divers / Général ] (christophedlr)

vendredi 10 octobre 2008 à 07:46:23 | [Qt] MAJ StatusBar suvant Tabidget

christophedlr

Membre Club
Bonjour,

Dans mon programme, j'ai 4 onglets avec un QTextEdit dans chacun d'eux.
Je voudrais quand j'écrit du texte que la StatusBar affiche ligne et colonne actuelle.

Cela fonctionne mais uniquement sur le premier onglet.
Voici le code :
QFicEditor.h :

#ifndef __QFICEDITOR_H__
#define __QFICEDITOR_H__

#include <QtGui>

class QFicEditor : public QMainWindow
{
    Q_OBJECT
   
    private slots:
    void updateColsRows();
    void changeCurrentIndex(int index);
   
    private:
    /*Menu Fichier*/
    QMenu *fileMenu;
    QMenu *exportFileMenu;
    QAction *actionNew;
    QAction *actionOpen;
    QAction *actionSave;
    QAction *actionSaveAs;
    QAction *actionExportTextFormat;
    QAction *actionExit;
   
    /*Le corps de l'appli*/
    QTabWidget *tabBar;
    QVBoxLayout *layout;
    QWidget *pageFicEditor;
    QTextEdit *textFic;
    QWidget *createPage();
   
    QLabel *labelCols;
    void createMenus(); //Les menus
    void createMenuFile(); //Menu Fichier
    QTextEdit *getTabTextActual(); //Récupère le QTextEdit de l'onglet
    void updateColsRows(int rows, int cols);
   
    public:
    QFicEditor();
    ~QFicEditor();
};

#endif


QFicEditor.cpp :

#include "QFicEditor.h"

QFicEditor::QFicEditor()
{
setWindowTitle("FicEditor");//Titre
setMinimumSize(640,480);//Taille minimale

createMenus();

/*Affiche le corps du programme*/
tabBar=newQTabWidget;
inttabFic=tabBar->addTab(createPage(),tr("FicEditor"));
inttabCharacter=tabBar->addTab(createPage(),tr("Personnages"));
inttabPlace=tabBar->addTab(createPage(),tr("Lieux"));
inttabIdea=tabBar->addTab(createPage(),trUtf8("Idées"));
tabBar->setCurrentIndex(tabFic);
setCentralWidget(tabBar);
connect(tabBar,SIGNAL(currentChanged(int)),this,SLOT(changeCurrentIndex(int)));

/*Crée un QLabel, inscrit la colone et ligne et l'ajoute au QStatusBar*/
labelCols=newQLabel;
updateColsRows(1,1);
statusBar()->addWidget(labelCols);
connect(getTabTextActual(),SIGNAL(cursorPositionChanged()),
this,SLOT(updateColsRows()));
}

QFicEditor::~QFicEditor()
{
deletetabBar;
}

/*Ajoute un nouvel onglet de travaille*/
QWidget*QFicEditor::createPage()
{
QWidget*pageFicEditor=newQWidget;
QTextEdit*textFic=newQTextEdit;

QVBoxLayout*layout=newQVBoxLayout;
layout->setContentsMargins(0,0,0,0);//Marges du layout
layout->addWidget(textFic);//Ajoute le widget
pageFicEditor->setLayout(layout);

tabBar->setContentsMargins(0,0,0,0);
returnpageFicEditor;
}

/*Met à jour colone et ligne dans le QStatusBar*/
voidQFicEditor::updateColsRows(introws,intcols)
{
/*Convertis le int en QString*/
QStringnumCols;
QStringnumRows;
numCols.setNum(cols);
numRows.setNum(rows);

QStringtextRows=tr("lignes ")+numRows;
QStringtextCols=tr(" : Cols ")+numCols;

labelCols->setText(textRows+textCols);
}

/*Slot de mise à jour lignes et colonnes*/
voidQFicEditor::updateColsRows()
{
QTextCursortextCursor=getTabTextActual()->textCursor();

intlines=0;
for(inti=0;i<textCursor.position();i++)
{
if(getTabTextActual()->toPlainText()[i]=='\n')
{
lines++;
}
}

lines++;
updateColsRows(lines,textCursor.columnNumber()+1);
}

/*Slot de changement de l'index courant de notre tab*/
voidQFicEditor::changeCurrentIndex(intindex)
{
tabBar->setCurrentIndex(index);
}

/*Crée les menus*/
voidQFicEditor::createMenus()
{
createMenuFile();
}

/*Crée le menu Fichier*/
voidQFicEditor::createMenuFile()
{
QMenu*fileMenu=menuBar()->addMenu(tr("&Fichier"));
QAction*actionNew=newQAction(tr("&Nouveau"),this);
actionNew->setShortcut(tr("Ctrl+N"));
QAction*actionOpen=newQAction(tr("&Ouvrir"),this);
actionOpen->setShortcut(tr("Ctrl+O"));
QAction*actionSave=newQAction(tr("&Enregistrer"),this);
actionSave->setShortcut(tr("Ctrl+S"));
QAction*actionSaveAs=newQAction(tr("Enregistrer &sous"),this);
QMenu*exportFileMenu=newQMenu(tr("Exporter"),this);
QAction*actionExportTextFormat=newQAction(tr("&Fichier texte BBCode"),this);
QAction*actionExit=newQAction(tr("&Quitter"),this);
actionExit->setShortcut(tr("Ctrl+Q"));
connect(actionExit,SIGNAL(triggered()),qApp,SLOT(quit()));

exportFileMenu->addAction(actionExportTextFormat);
fileMenu->addAction(actionNew);
fileMenu->addAction(actionOpen);
fileMenu->addAction(actionSave);
fileMenu->addAction(actionSaveAs);
fileMenu->addSeparator();
fileMenu->addMenu(exportFileMenu);
fileMenu->addAction(actionExit);
}

QTextEdit*QFicEditor::getTabTextActual()
{
returntabBar->currentWidget()->findChild<QTextEdit*>();
}
Le problème étant que la mise à jour de la StatusBar ne se fait que quand on est sur le premier onglet, et pas sur les autres.

Merci d'avance à ceux qui pourront m'aider.



Cette discussion est classé dans : tr, filemenu, qficeditor, qaction, tabbar


Répondre à ce message

Sujets en rapport avec ce message

CA VA TRÈs MAL ! ressource gdi [ par michelmt ] j'ai fais un programme qui sert a comptécombien de pièce je peut entré dans une feuille de stratifieril me dessine les grandes feuilles puis y insertl image + char* + mysql [ par cartouh ] HelloVoila, j'ai un big PRBLM!!!je desire lire une image jpg et la stocker dans uune base mysql, tout simplement.pour cela, je lis mon fichier que je time.h [ par coucou747 ] j'aimerais cronométrer le temp de calcul d'un de mes programme...j'ai vu plusieurs sources, mais je n'arrives pas a les coller chez moi...voici mon pr BLITZ++ [ par ciaonataha ] Salut a tous!!!J'ai besoin d'aide..Qn travaillent avec biblioteque BLITZ++....Je veux recrier ça:for (int t=0; t {  for (int p=0; p     if (T==Tr(t


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.