Пример #1
0
AddressBook::AddressBook(QWidget *parent)
    : QWidget(parent)
{
    QLabel *nameLabel = new QLabel(tr("Name:"));
    nameLine = new QLineEdit;
//! [setting readonly 1]
    nameLine->setReadOnly(true);
//! [setting readonly 1]
    QLabel *addressLabel = new QLabel(tr("Address:"));
    addressText = new QTextEdit;
//! [setting readonly 2]    
    addressText->setReadOnly(true);
//! [setting readonly 2]
   
//! [pushbutton declaration]
    addButton = new QPushButton(tr("&Add"));
    addButton->show();
    submitButton = new QPushButton(tr("&Submit"));
    submitButton->hide();
    cancelButton = new QPushButton(tr("&Cancel"));
    cancelButton->hide();
//! [pushbutton declaration]
//! [connecting signals and slots]
    connect(addButton, SIGNAL(clicked()), this, SLOT(addContact()));
    connect(submitButton, SIGNAL(clicked()), this, SLOT(submitContact()));
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));
//! [connecting signals and slots]
//! [vertical layout]
    QVBoxLayout *buttonLayout1 = new QVBoxLayout;
    buttonLayout1->addWidget(addButton, Qt::AlignTop);
    buttonLayout1->addWidget(submitButton);
    buttonLayout1->addWidget(cancelButton);
    buttonLayout1->addStretch();
//! [vertical layout]
//! [grid layout]
    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->addWidget(nameLabel, 0, 0);
    mainLayout->addWidget(nameLine, 0, 1);
    mainLayout->addWidget(addressLabel, 1, 0, Qt::AlignTop);
    mainLayout->addWidget(addressText, 1, 1);
    mainLayout->addLayout(buttonLayout1, 1, 2);
//! [grid layout]
    setLayout(mainLayout);
    setWindowTitle(tr("Simple Address Book"));
}
Пример #2
0
int AddressBook::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QWidget::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: addContact(); break;
        case 1: submitContact(); break;
        case 2: cancel(); break;
        case 3: next(); break;
        case 4: previous(); break;
        default: ;
        }
        _id -= 5;
    }
    return _id;
}
Пример #3
0
AddressBook::AddressBook(QWidget *parent)
    : QWidget(parent)
{
    QLabel *nameLabel = new QLabel(tr("Name:"));         // создаем объект  QLabel nameLabel
    nameLine = new QLineEdit;
    nameLine->setReadOnly(true);    // устанавливаем в режим только для чтения

    QLabel *addressLabel = new QLabel(tr("Address:"));  // создаем объект  QLabel addressLabel
    addressText = new QTextEdit;
    addressText->setReadOnly(true); // устанавливаем в режим только для чтения

    addButton = new QPushButton(tr("&Add"));        //  создаем экземпляр кнопоки
    addButton->show();                              //  устанавливаем ее отображение на экране после вызова функции show
    submitButton = new QPushButton(tr("&Submit"));  //  создаем экземпляр кнопоки
    submitButton->hide();                           //  устанавливаем ее отображение на экране после вызова функции hide(после нажатия кнопки "Add")
    cancelButton = new QPushButton(tr("&Cancel"));  //  создаем экземпляр кнопоки
    cancelButton->hide();                           //  устанавливаем ее отображение на экране после вызова функции hide(после нажатия кнопки "Add")

    connect(addButton, SIGNAL(clicked()), this, SLOT(addContact()));        //
    connect(submitButton, SIGNAL(clicked()), this, SLOT(submitContact()));   // Соединяем кнопки с соответствующими им слотами
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));         //

    QVBoxLayout *buttonLayout1 = new QVBoxLayout;       //
    buttonLayout1->addWidget(addButton, Qt::AlignTop);  //  Расположение кнопок виджета
    buttonLayout1->addWidget(submitButton);             //
    buttonLayout1->addWidget(cancelButton);             //
    buttonLayout1->addStretch();                        //  чтобы расположить кнопки ближе к верхней части виджета

    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->addWidget(nameLabel, 0, 0);
    mainLayout->addWidget(nameLine, 0, 1);
    mainLayout->addWidget(addressLabel, 1, 0, Qt::AlignTop);
    mainLayout->addWidget(addressText, 1, 1);
    mainLayout->addLayout(buttonLayout1, 1, 2);

    setLayout(mainLayout);
    setWindowTitle(tr("Simple Address Book"));

}
Пример #4
0
/**
 * @author Macai
 * @slot function: show dialog for add a contact
 * @brief MainWindow::showAddDlg
 */
void MainWindow::showAddContactDlg()
{
    AddContactDialog* addDlg = new AddContactDialog(this);

    connect(addDlg, SIGNAL(updateGroup(QString)),
            ui->grouplistWidget, SLOT(updateGroup(QString)) );
    connect(addDlg, SIGNAL(submitContact(QList<QVariant>)),
            ui->contactTableView, SLOT(addContact(QList<QVariant>)) );

    QStringList list;
    int cnt = ui->grouplistWidget->count();
    for( int i = 0; i < cnt; ++i)
    {
        QString text = ui->grouplistWidget->item(i)->text();
        if( text == GROUP_ALL) continue;
        list.append(text);
    }
    int idx = ui->grouplistWidget->currentRow();
    addDlg->initGroupCombobox(idx, list);

    int ret = addDlg->exec();
    addDlg->deleteLater();
}
Пример #5
0
AddressBook::AddressBook(QWidget *parent)
    : QWidget(parent), ui(new Ui::AddressBook)
{
    ui->setupUi(this);

    ui->nameLine->setReadOnly(true);
    ui->addressText->setReadOnly(true);
    ui->submitButton->hide();
    ui->cancelButton->hide();
    ui->nextButton->setEnabled(false);
    ui->previousButton->setEnabled(false);

//! [extract objects]
    ui->editButton->setEnabled(false);
    ui->removeButton->setEnabled(false);
//! [extract objects]

    connect(ui->addButton, SIGNAL(clicked()), this,
                SLOT(addContact()));
    connect(ui->submitButton, SIGNAL(clicked()), this,
                SLOT(submitContact()));
    connect(ui->cancelButton, SIGNAL(clicked()), this,
                SLOT(cancel()));
    connect(ui->nextButton, SIGNAL(clicked()), this,
                SLOT(next()));
    connect(ui->previousButton, SIGNAL(clicked()), this,
                SLOT(previous()));
//! [signal slot]
    connect(ui->editButton, SIGNAL(clicked()), this,
                SLOT(editContact()));
    connect(ui->removeButton, SIGNAL(clicked()), this,
                SLOT(removeContact()));
//! [signal slot]

    setWindowTitle(tr("Simple Address Book"));
}
Пример #6
0
AddressBook::AddressBook(QWidget *parent)
    : QWidget(parent)
{
    QLabel *nameLabel = new QLabel(tr("Name:"));
    nameLine = new QLineEdit;
    nameLine->setReadOnly(true);

    QLabel *addressLabel = new QLabel(tr("Address:"));
    addressText = new QTextEdit;
    addressText->setReadOnly(true);

    addButton = new QPushButton(tr("&Add"));

    editButton = new QPushButton(tr("&Edit"));
    editButton->setEnabled(false);
    removeButton = new QPushButton(tr("&Remove"));
    removeButton->setEnabled(false);
    findButton = new QPushButton(tr("&Find"));
    findButton->setEnabled(false);
    submitButton = new QPushButton(tr("&Submit"));
    submitButton->hide();
    cancelButton = new QPushButton(tr("&Cancel"));
    cancelButton->hide();

    nextButton = new QPushButton(tr("&Next"));
    nextButton->setEnabled(false);
    previousButton = new QPushButton(tr("&Previous"));
    previousButton->setEnabled(false);

    loadButton = new QPushButton(tr("&Load..."));
//! [tooltip 1]    
    loadButton->setToolTip(tr("Load contacts from a file"));
//! [tooltip 1]        
    saveButton = new QPushButton(tr("&Save..."));
//! [tooltip 2]
    saveButton->setToolTip(tr("Save contacts to a file"));
//! [tooltip 2]
    saveButton->setEnabled(false);

    dialog = new FindDialog;

    connect(addButton, SIGNAL(clicked()), this, SLOT(addContact()));
    connect(submitButton, SIGNAL(clicked()), this, SLOT(submitContact()));
    connect(editButton, SIGNAL(clicked()), this, SLOT(editContact()));
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));
    connect(removeButton, SIGNAL(clicked()), this, SLOT(removeContact()));
    connect(findButton, SIGNAL(clicked()), this, SLOT(findContact()));
    connect(nextButton, SIGNAL(clicked()), this, SLOT(next()));
    connect(previousButton, SIGNAL(clicked()), this, SLOT(previous()));
    connect(loadButton, SIGNAL(clicked()), this, SLOT(loadFromFile()));
    connect(saveButton, SIGNAL(clicked()), this, SLOT(saveToFile()));
    
    QVBoxLayout *buttonLayout1 = new QVBoxLayout;
    buttonLayout1->addWidget(addButton);
    buttonLayout1->addWidget(editButton);
    buttonLayout1->addWidget(removeButton);
    buttonLayout1->addWidget(findButton);
    buttonLayout1->addWidget(submitButton);
    buttonLayout1->addWidget(cancelButton);
    buttonLayout1->addWidget(loadButton);
    buttonLayout1->addWidget(saveButton);
    buttonLayout1->addStretch();

    QHBoxLayout *buttonLayout2 = new QHBoxLayout;
    buttonLayout2->addWidget(previousButton);
    buttonLayout2->addWidget(nextButton);

    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->addWidget(nameLabel, 0, 0);
    mainLayout->addWidget(nameLine, 0, 1);
    mainLayout->addWidget(addressLabel, 1, 0, Qt::AlignTop);
    mainLayout->addWidget(addressText, 1, 1);
    mainLayout->addLayout(buttonLayout1, 1, 2);
    mainLayout->addLayout(buttonLayout2, 2, 1);

    setLayout(mainLayout);
    setWindowTitle(tr("Simple Address Book"));
}
Пример #7
0
AddressBook::AddressBook(QWidget *parent)
    : QWidget(parent)
{
    QLabel *nameLabel = new QLabel(tr("Name:"));
    nameLine = new QLineEdit;
    nameLine->setReadOnly(true);

    QLabel *addressLabel = new QLabel(tr("Address:"));
    addressText = new QTextEdit;
    addressText->setReadOnly(true);

    addButton = new QPushButton(tr("&Add"));
//! [edit and remove buttons] 
    editButton = new QPushButton(tr("&Edit"));
    editButton->setEnabled(false);
    removeButton = new QPushButton(tr("&Remove"));
    removeButton->setEnabled(false);
//! [edit and remove buttons] 
    submitButton = new QPushButton(tr("&Submit"));
    submitButton->hide();
    cancelButton = new QPushButton(tr("&Cancel"));
    cancelButton->hide();
    
    nextButton = new QPushButton(tr("&Next"));
    nextButton->setEnabled(false);
    previousButton = new QPushButton(tr("&Previous"));
    previousButton->setEnabled(false);

    connect(addButton, SIGNAL(clicked()), this, SLOT(addContact()));
    connect(submitButton, SIGNAL(clicked()), this, SLOT(submitContact()));
//! [connecting edit and remove] 
    connect(editButton, SIGNAL(clicked()), this, SLOT(editContact()));
    connect(removeButton, SIGNAL(clicked()), this, SLOT(removeContact()));
//! [connecting edit and remove] 
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));
    connect(nextButton, SIGNAL(clicked()), this, SLOT(next()));
    connect(previousButton, SIGNAL(clicked()), this, SLOT(previous()));

    QVBoxLayout *buttonLayout1 = new QVBoxLayout;
    buttonLayout1->addWidget(addButton);
//! [adding edit and remove to the layout]     
    buttonLayout1->addWidget(editButton);
    buttonLayout1->addWidget(removeButton);
//! [adding edit and remove to the layout]         
    buttonLayout1->addWidget(submitButton);
    buttonLayout1->addWidget(cancelButton);
    buttonLayout1->addStretch();

    QHBoxLayout *buttonLayout2 = new QHBoxLayout;
    buttonLayout2->addWidget(previousButton);
    buttonLayout2->addWidget(nextButton);

    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->addWidget(nameLabel, 0, 0);
    mainLayout->addWidget(nameLine, 0, 1);
    mainLayout->addWidget(addressLabel, 1, 0, Qt::AlignTop);
    mainLayout->addWidget(addressText, 1, 1);
    mainLayout->addLayout(buttonLayout1, 1, 2);
    mainLayout->addLayout(buttonLayout2, 2, 1);

    setLayout(mainLayout);
    setWindowTitle(tr("Simple Address Book"));
}
Пример #8
0
void AddContactDialog::addContact()
{
    QList<QVariant> contactData = contactInfo();
    emit submitContact(contactData);
    emit updateGroup(contactData.at(0).toString());
}
Пример #9
0
AddressBook::AddressBook(QWidget *parent)
     : QMainWindow(parent)
 {

    
    // Init. de la BDD
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("addressbook.sqlite");

    if(!db.open()) { // Si l'ouverture du fichier de données est impossible on le notifie à l'utilisateur et on ferme le programme
         QMessageBox::warning(this, "Init.", "Impossible d'accèder à la base de données.\nImpossible de lancer le programme\n");
         exit(1);
     }
    // La table contient les données suivantes
    // id, nom, prénom, date de naissance, sexe, n° téléphone, n° téléphone portable,
    // n° téléphone professionnel, n° de fax, adresse e-mail, url du site internet,
    // adresse du domicile, ville du domicile, code postal du domicile
    // adresse du bureau, ville du bureau, code postal du bureau
    // l'id du 1er parent et du 2nd parent -- inutilisés mais dans les anciennes contraintes du programmes
    QSqlQuery query;
    query.exec("CREATE TABLE IF NOT EXISTS `addressbook` ("
            "`id` INTEGER PRIMARY KEY,"
            "`lastname` TEXT NOT NULL,"
            "`firstname` TEXT NOT NULL,"
            "`date` TEXT ,"
            "`gender` INTEGER ,"
            "`phone` TEXT ,"
            "`cellphone` TEXT ,"
            "`prophone` TEXT ,"
            "`fax` TEXT ,"
            "`email` TEXT ,"
            "`website` TEXT ,"
            "`homeaddress` TEXT ,"
            "`homecity` TEXT ,"
            "`homezip` INTEGER ,"
            "`proaddress` TEXT ,"
            "`procity` TEXT ,"
            "`prozip` INTEGER ,"
            "`id_parent1` INTEGER ,"
            "`id_parent2` INTEGER )");

     // Les éléments du formulaire d'ajout/modification de contact

// /!\ CETTE (ces) LIGNE(s) (et les éventuelles lignes semblables) A (ont) ETE INSPIREE PAR "LE TUTORIEL CARNET D'ADRESSES QT" (disponible à l'adresse "http://doc.qt.nokia.com/4.6/tutorials-addressbook-fr-part1.html"). LE CODE REPRIS EST DISPONIBLE A LA (aux) LIGNE(s) SUIVANTE(s)
     //  nameLine = new QLineEdit;
     nameLine = new QLineEdit; // Champ de saisie du prénom
     lastnameLine = new QLineEdit;
     dateLine = new QDateEdit;
     dateLine->setDisplayFormat("dd/MM/yyyy");
// /!\ CETTE (ces) LIGNE(s) (et les éventuelles lignes semblables) A (ont) ETE INSPIREE PAR "LA DOCUMENTATION QT - Line Edits Example" (disponible à l'adresse "http://doc.qt.nokia.com/4.6/widgets-lineedits.html"). LE CODE REPRIS EST DISPONIBLE A LA (aux) LIGNE(s) SUIVANTE(s)
  /* QComboBox *validatorComboBox = new QComboBox;
     validatorComboBox->addItem(tr("No validator"));
     validatorComboBox->addItem(tr("Integer validator")); */
     sexLine = new QComboBox; // Liste déroulante pour le sexe
      sexLine->addItem("Masculin");
      sexLine->addItem("Féminin");
     phoneLine = new QLineEdit;
     cellphoneLine = new QLineEdit;
     prophoneLine = new QLineEdit;
     faxLine = new QLineEdit;
     emailLine = new QLineEdit;
     websiteLine = new QLineEdit;
// /!\ CETTE (ces) LIGNE(s) (et les éventuelles lignes semblables) A (ont) ETE INSPIREEs PAR "LE TUTORIEL CARNET D'ADRESSES QT" (disponible à l'adresse "http://doc.qt.nokia.com/4.6/tutorials-addressbook-fr-part1.html"). LE CODE REPRIS EST DISPONIBLE A LA (aux) LIGNE(s) SUIVANTE(s)
      // addressText = new QTextEdit;
     homeaddressLine = new QTextEdit;  // Boîte de saise de l'adresse perso.
      homeaddressLine->setFixedHeight(48); // Définition d'une taille fixe pour la boîte de saisie pour ne pas avoir de problème lors du redimensionnement de la fenêtre
     homecityLine = new QLineEdit;
     homezipLine = new QLineEdit;
     proaddressLine = new QTextEdit;
     proaddressLine->setFixedHeight(48);
     procityLine = new QLineEdit;
     prozipLine = new QLineEdit;

// /!\ CETTE (ces) LIGNE(s) (et les éventuelles lignes semblables) A (ont) ETE INSPIREEs PAR "LE TUTORIEL CARNET D'ADRESSES QT" (disponible à l'adresse "http://doc.qt.nokia.com/4.6/tutorials-addressbook-fr-part1.html"). LE CODE REPRIS EST DISPONIBLE A LA (aux) LIGNE(s) SUIVANTE(s)
     // addButton = new QPushButton(tr("&Add"));
     addButton = new QPushButton(tr("&Ajouter")); // Bouton pour l'ajout d'une fiche nommé "Ajouter" -- également renommé pour la modification
     cancelButton = new QPushButton(tr("A&nnuler"));

// /!\ CETTE (ces) LIGNE(s) (et les éventuelles lignes semblables) A (ont) ETE INSPIREEs PAR "LE TUTORIEL CARNET D'ADRESSES QT" (disponible à l'adresse "http://doc.qt.nokia.com/4.6/tutorials-addressbook-fr-part2.html"). LE CODE REPRIS EST DISPONIBLE A LA (aux) LIGNE(s) SUIVANTE(s)
     // connect(addButton, SIGNAL(clicked()), this, SLOT(addContact()));
     connect(addButton, SIGNAL(clicked()), this, SLOT(submitContact())); // quand on clique sur addButton on exécute la fonction submitContact()
     connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));

     // Editeur de données.
      // Coordonnées pro.
// /!\ CETTE (ces) LIGNE(s) (et les éventuelles lignes semblables) A (ont) ETE INSPIREEs PAR "LA DOCUMENTATION QT - QFormLayout Class Reference" (disponible à l'adresse "http://doc.qt.nokia.com/4.6/qformlayout.html"). LE CODE REPRIS EST DISPONIBLE A LA (aux) LIGNE(s) SUIVANTE(s)
     // QFormLayout *formLayout = new QFormLayout;
     // formLayout->addRow(tr("&Name:"), nameLineEdit);
     EditorProfessionnalInfos = new QFormLayout; // Création du formulaire EditorProfessionnalInfos
      EditorProfessionnalInfos->addRow(tr("&Téléphone :"), prophoneLine); // Ajout de la ligne libellée "Téléphone" avec le widget prophoneLine
      EditorProfessionnalInfos->addRow(tr("&Fax :"), faxLine);
      EditorProfessionnalInfos->addRow(tr("&Adresse :"), proaddressLine);
      EditorProfessionnalInfos->addRow(tr("&Code postal :"), prozipLine);
      EditorProfessionnalInfos->addRow(tr("&Ville :"), procityLine);

      // Coordonnées perso.
     EditorPersonnalInfos = new QFormLayout;
      EditorPersonnalInfos->addRow(tr("&Téléphone :"), phoneLine);
      EditorPersonnalInfos->addRow(tr("&Portable :"), cellphoneLine);
      EditorPersonnalInfos->addRow(tr("&Adresse :"), homeaddressLine);
      EditorPersonnalInfos->addRow(tr("&Code postal :"), homezipLine);
      EditorPersonnalInfos->addRow(tr("&Ville :"), homecityLine);
      EditorPersonnalInfos->addRow(tr("&E-mail :"), emailLine);
      EditorPersonnalInfos->addRow(tr("&Site web :"), websiteLine);

      // Etat civil.
     EditorIdentity = new QFormLayout;
      EditorIdentity->addRow(tr("&Prénom :"), nameLine);
      EditorIdentity->addRow(tr("&Nom :"), lastnameLine);
      EditorIdentity->addRow(tr("&Sexe :"), sexLine);
      EditorIdentity->addRow(tr("&Date de naissance :"), dateLine);

// /!\ CETTE (ces) LIGNE(s) (et les éventuelles lignes semblables) A (ont) ETE INSPIREEs PAR "LE SITE DU ZERO - Apprenez à programmer en C++ ! > [Pratique] Créez vos propres fenêtres avec Qt > Les principaux widgets" (disponible à l'adresse "http://www.siteduzero.com/tutoriel-3-11316-les-principaux-widgets.html#ss_part_5"). LE CODE REPRIS EST DISPONIBLE A LA (aux) LIGNE(s) SUIVANTE(s)
/*
QFrame *frame = new QFrame(&fenetre);
    frame->setFrameShape(QFrame::StyledPanel);
    frame->setGeometry(30, 20, 120, 90);


    QLineEdit *lineEdit = new QLineEdit("Entrez votre nom");
    QPushButton *bouton1 = new QPushButton("Cliquez ici");
    QPushButton *bouton2 = new QPushButton("Ou là...");

    QVBoxLayout *vbox = new QVBoxLayout;
    vbox->addWidget(lineEdit);
    vbox->addWidget(bouton1);
    vbox->addWidget(bouton2);

    frame->setLayout(vbox);

  */
     Editor = new QTabWidget(); // Création du widget à onglets Editor
      Editor->setGeometry(30, 20, 240, 160); // définition de la position 30,20 et de la taille 240*160
      page1 = new QWidget; // Création du widget page1 - 1er onglet
       page1->setLayout(EditorIdentity); // Définition du contenu de page1
       Editor->addTab(page1, "Identité"); // Ajout et définition du titre du 3ème onglet : "Identité"
      page2 = new QWidget;
       page2->setLayout(EditorPersonnalInfos);
       Editor->addTab(page2, "Coordonnées perso.");
      page3 = new QWidget;
       page3->setLayout(EditorProfessionnalInfos);
       Editor->addTab(page3, "Coordonnées pro.");

     ActionsButtons = new QHBoxLayout; // Création d'un layout horizontal pour les boutons
      ActionsButtons->addWidget(addButton); // Ajout du bouton addButton au layout
      ActionsButtons->addWidget(cancelButton);

     ActionsButtonsWidget = new QWidget; // Création d'un widget pour les boutons
      ActionsButtonsWidget->setLayout(ActionsButtons); // Définition du layout ActionsButtons au widget ActionsButtonsWidget


     dockLayout = new QVBoxLayout; // Création d'un layout vertical pour le dock
      dockLayout->addWidget(Editor);
      dockLayout->addWidget(ActionsButtonsWidget);
     DockWidget = new QWidget; // Création d'un widget pour le dock
      DockWidget->setLayout(dockLayout); // Définition du layout dockLayout au widget DockWidget

      dockInfos = new QDockWidget(tr("Informations"), this); // Création d'un widget dock de titre "Informations"
       addDockWidget(Qt::LeftDockWidgetArea, dockInfos); // Ajout du dock dockInfos à la gauche de la fenêtre
        infosLabel = new QTextBrowser(this); // Création d'un nouveau widget QTextBrowser infoLabel
        infosLabel->setText("<h1>Bienvenue !</h1><p>Sélectionnez un contact pour en afficher les détails ou ajoutez une nouvelle fiche au carnet d'adresses.</p>"); // Définition du contenu du QTextBrowser. Il autorise le formatage du texte avec du HTML
        infosLabel->setAlignment(Qt::AlignTop); // Définition de l'alignement vertical du texte : haut
        infosLabel->setReadOnly(1); // Définition du widget en lecture seule : il est utilisé uniquement pour l'affichage
         infosLabel->setOpenExternalLinks(1); // Autoriser l'ouverture des liens externes dans un navigateur
         infosLabel->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse); // Autoriser les liens et la sélection de texte à la souris
         connect(infosLabel, SIGNAL(anchorClicked(QUrl)), this, SLOT(inContextLink(QUrl))); // signal pour l'ouverture des liens internes (ancres #blabla)
        dockInfos->setWidget(infosLabel);


     dock = new QDockWidget(tr("Editeur"), this);
     dock->setAllowedAreas(Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea | Qt::LeftDockWidgetArea);
      dock->setWidget(DockWidget);
      addDockWidget(Qt::RightDockWidgetArea, dock);




    // Modèle. Objet désignant la table "addressbook" de la BDD.
      // Couche d'abstraction destinée à faciliter les accès, éviter les injections etc.
    model = new QSqlTableModel;
      model->setTable("addressbook"); // définition de la table traitée
      model->setEditStrategy(QSqlTableModel::OnManualSubmit); // stratégie d'édition du modèle (= quand on enregistre le fichier ?) - réglé sur un déclenchement manuel
      model->select(); // mise à jour des données (on selectionne tout)
      model->setHeaderData(0, Qt::Horizontal, tr("id")); // modification du titre de la colonne 0
      model->setHeaderData(1, Qt::Horizontal, tr("Prénom"));
      model->setHeaderData(2, Qt::Horizontal, tr("Nom"));

     // Vue. Objet affichant le modèle
        // Widget proposé simplifiant les communications avec le modèle.
    view = new QTableView;
     view->setModel(model); // Définition du modèle sur model
     switchView(); // Appel de la fonction switchView de la classe. Elle retire la majeure partie des colonnes pour n'afficher que l'id, le nom et le prénom
     view->setShowGrid(0); // Ote la grille
     view->setEditTriggers(QAbstractItemView::NoEditTriggers); // Désactivation de l'édition au sein du tableau
     view->setSelectionBehavior(QAbstractItemView::SelectRows); // Permet la seule sélection d'une ligne
     view->setSelectionMode(QAbstractItemView::SingleSelection); // Permettre la sélection d'une seule ligne seulement
     view->sortByColumn(0,Qt::AscendingOrder); // Tri initial par id
     view->verticalHeader()->hide(); // Cache l'affichage des numéros de ligne
     view->setSortingEnabled(true); // Autorise le tri
     view->show(); // Affichage du tableau
     connect(view, SIGNAL(clicked(QModelIndex)), this, SLOT(retrieveContactData()));

      setCentralWidget(view); // défini view en tant que widget central de la fenêtre (celle de la classe)


      // Affichage de la barre de menu.
    menuFile = menuBar()->addMenu("&Fichier"); // Nouvelle barre de menu : Fichier
    menuitemNew = menuFile->addAction("&Nouvelle fiche"); // Nouvel élément de menu : Nouvelle fiche
     menuitemNew->setShortcut(QKeySequence::New); // Définition du raccourci clavier assigné à cette entrée du menu
     menuitemNew->setIcon(QIcon("./icons/list-add.png")); // Définition de l'icône associée à cette entrée du menu
      connect(menuitemNew, SIGNAL(triggered()), this, SLOT(editorClear()));
     menuitemDelete = menuFile->addAction("&Supprimer fiche");
     menuitemDelete->setShortcut(QKeySequence::Delete);
     menuitemDelete->setIcon(QIcon("./icons/list-remove.png"));
      connect(menuitemDelete, SIGNAL(triggered()), this, SLOT(deleteContact()));
     menuitemExport = menuFile->addAction("&Exporter");
      connect(menuitemExport, SIGNAL(triggered()), this, SLOT(csvExport()));
     menuitemQuit = menuFile->addAction("&Quitter");
     menuitemQuit->setShortcut(QKeySequence::Quit);
      connect(menuitemQuit, SIGNAL(triggered()), qApp, SLOT(quit()));
/*    menuView = menuBar()->addMenu("&Affichage");
     menuitemFullView = menuView->addAction("&Affichage complet");
      menuitemFullView->setCheckable(true);
      connect(menuitemFullView, SIGNAL(triggered()), this, SLOT(switchView()));*/
    menuHelp = menuBar()->addMenu("&Aide");
     menuitemAboutapp = menuHelp->addAction("&A propos...");
      connect(menuitemAboutapp, SIGNAL(triggered()), this, SLOT(aboutApp()));
     menuitemAboutQt = menuHelp->addAction("&A propos de Qt...");
      connect(menuitemAboutQt, SIGNAL(triggered()), this, SLOT(aboutQt()));

      // Affichage de la barre d'outils
    QToolBar *toolbar  = addToolBar("Barre d'outils"); // Nouvelle barre d'outils
     toolbar->addAction(menuitemNew); // ajout du bouton menuitemNew à la barre (même élément que celui du menu)
     toolbar->addAction(menuitemDelete);
     quicksearchLabel = new QLabel(tr("Recherche : "),this);
      toolbar->addWidget(quicksearchLabel); // ajout champ de recherche
     quicksearchLine = new QLineEdit;
      toolbar->addWidget(quicksearchLine);
      connect(quicksearchLine, SIGNAL(textChanged(QString)), this, SLOT(updateSearch(QString)));


      // TODO : Trouver un titre pour cette application.
     setWindowTitle(tr("Swithom"));
}
Пример #10
0
AddressBook::AddressBook(QWidget *parent)
    : QWidget(parent)
{
    QLabel *nameLabel = new QLabel(tr("Имя:"));         // создаем объект  QLabel nameLabel (поле ввода имени)
    nameLine = new QLineEdit;
    nameLine->setReadOnly(true);    // устанавливаем в режим только для чтения

    QLabel *addressLabel = new QLabel(tr("Адрес:"));  // создаем объект  QLabel addressLabel (поле ввода адреса)
    addressText = new QTextEdit;
    addressText->setReadOnly(true); // устанавливаем в режим только для чтения

    addButton = new QPushButton(tr("&Добавить"));        //  создаем экземпляр кнопоки
    addButton->show();                              //  устанавливаем ее отображение на экране после вызова функции show
    submitButton = new QPushButton(tr("&Принять"));  //  создаем экземпляр кнопоки
    submitButton->hide();                           //  устанавливаем ее отображение на экране после вызова функции hide(после нажатия кнопки "Add")
    cancelButton = new QPushButton(tr("&Отмена"));  //  создаем экземпляр кнопоки
    cancelButton->hide();                           //  устанавливаем ее отображение на экране после вызова функции hide(после нажатия кнопки "Add")

    nextButton = new QPushButton(tr("&Следующий"));      //  создаем экземпляр кнопки
    nextButton->setEnabled(false);                  //  отключаем ее
    previousButton = new QPushButton(tr("&Предыдущий"));
    previousButton->setEnabled(false);

    editButton = new QPushButton(tr("&Изменить"));
    editButton->setEnabled(false);
    removeButton = new QPushButton(tr("&Удалить"));
    removeButton->setEnabled(false);

    findButton = new QPushButton(tr("&Найти"));
    findButton->setEnabled(false);

    loadButton = new QPushButton(tr("&Загрузить..."));
    loadButton->setToolTip(tr("Загрузка контактов из файла"));
    saveButton = new QPushButton(tr("&Сохранить..."));
    saveButton->setToolTip(tr("Сохранить контакты в файл"));
    saveButton->setEnabled(false);

    cloudButton = new QPushButton(tr("&Хранилище"));
    cloudButton->setEnabled(false);
    webView = new QWebView;

    dialog = new finddialog;        // создаем объект (для отображения)

    connect(addButton, SIGNAL(clicked()), this, SLOT(addContact()));            //
    connect(submitButton, SIGNAL(clicked()), this, SLOT(submitContact()));      // Соединяем кнопки с соответствующими им слотами (при нажатии срабатывает SLOT, который вызывает функцию)
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));             //

    connect(nextButton, SIGNAL(clicked()), this, SLOT(next()));
    connect(previousButton, SIGNAL(clicked()), this, SLOT(previous()));

    connect(editButton, SIGNAL(clicked()), this, SLOT(editContact()));
    connect(removeButton, SIGNAL(clicked()), this, SLOT(removeContact()));

    connect(findButton, SIGNAL(clicked()), this, SLOT(findContact()));

    connect(loadButton, SIGNAL(clicked()), this, SLOT(loadFromFile()));
    connect(saveButton, SIGNAL(clicked()), this, SLOT(saveToFile()));

    connect(cloudButton, SIGNAL(clicked()), this, SLOT(cloudStorage()));

    QVBoxLayout *buttonLayout1 = new QVBoxLayout;       // Вертикальное расположение кнопок
    buttonLayout1->addWidget(addButton, Qt::AlignTop);  //  Расположение кнопок виджета
    buttonLayout1->addWidget(submitButton);             //
    buttonLayout1->addWidget(cancelButton);             //
    buttonLayout1->addWidget(editButton);
    buttonLayout1->addWidget(removeButton);
    buttonLayout1->addWidget(findButton);
    buttonLayout1->addWidget(loadButton);
    buttonLayout1->addWidget(saveButton);
    buttonLayout1->addWidget(cloudButton);
    buttonLayout1->addStretch();                        //  чтобы расположить кнопки ближе к верхней части виджета

    QHBoxLayout *buttonLayout2 = new QHBoxLayout;       // Горизонтальное расположение кнопок
    buttonLayout2->addWidget(previousButton);
    buttonLayout2->addWidget(nextButton);

    QGridLayout *mainLayout = new QGridLayout;          // Табличное размещение (таблица состоит из ячеек, позиции которых задаютсяф строками и столбцами)
    mainLayout->addWidget(nameLabel, 0, 0);             // поле ввода имени (в верхнем правом углу)
    mainLayout->addWidget(nameLine, 0, 1);
    mainLayout->addWidget(addressLabel, 1, 0, Qt::AlignTop); // Qt::AllignTop дополнительный параметр, который отвечает за расположение (чтобы поле располагалось не по центру)
    mainLayout->addWidget(addressText, 1, 1);
    mainLayout->addLayout(buttonLayout1, 1, 2);
    mainLayout->addLayout(buttonLayout2, 2, 1);

    setLayout(mainLayout);       // вызывает компоновку виджета
    setWindowTitle(tr("Адресная книга")); // название заголовка виджета

}