begin process at 2012 02 13 05:41:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

[Qt] MAJ StatusBar suvant Tabidget


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[Qt] MAJ StatusBar suvant Tabidget

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ée 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 modifier le contenu d'une base de donner avec un QTableview [ par sniperinternet ] je devloppe un programme de gestion dabsence d'une classe d'etudiant je travaille avec QTcreator 1.2 sous windowsXP **tt fonctionne bien j'ai réssu à


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales