View Single Post
eitama's Avatar
Posts: 702 | Thanked: 334 times | Joined on Feb 2010 @ Israel.
#8
Originally Posted by aspidites View Post
Mind posting the entire code? Hard to say whats wrong without the full context.
Sure!

I have written comments to where I have problems,
Right now this compiles just fine, ofc there is a UI file.
If it's needed i'll post it as well.

H File :
Code:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QGridLayout>
#include <QPushButton>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
    void callButtonClicked();
    void insertChar();
    void hangUpButtonClicked();

protected:
    void changeEvent(QEvent *e);

private:
    Ui::MainWindow *ui;
    void CreateLetter(QString letter);
    QGridLayout *lettersLayout;
    int row, col;
    QString abc;
    int currentLetter;
    int numberOfLettersPerRow;
    QList<QPushButton*> *existingLetterButtons;
    void init();
    int getNumberOfContacts();

};

#endif // MAINWINDOW_H



CPP File :
Code:
#include "mainwindow.h"
#include "ui_mainwindow.h"
// Something needs to be included to make this work.
// I Don't really know what, but from the help - I can realize that it is : #include <qcontactmanager.h>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    lettersLayout = new QGridLayout();
    lettersLayout->setMargin(0);
    abc = "abcdefghijklmnopqrstuvwxyz";
    numberOfLettersPerRow = 3;
    existingLetterButtons = new QList<QPushButton*>();
    init();
}

int MainWindow::getNumberOfContacts()
{
    // TODO - Here I want to fetch all the number of contacts in the contact list, and itterate through them.
    // I can't get this to compile...
    return 0;
}

void MainWindow::init()
{
    row = col = currentLetter = 0;
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::hangUpButtonClicked()
{
    for (int i = 0; i < existingLetterButtons->size(); i++)
    {
        QPushButton *tempButton = existingLetterButtons->at(i);
        delete tempButton;
    }
    existingLetterButtons->clear();
    init();
}

void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void MainWindow::callButtonClicked()
{
    CreateLetter(abc.at(currentLetter));
    if (currentLetter == abc.length() - 1)
    {
        currentLetter = 0;
    } else
    {
        currentLetter++;
    }
}

void MainWindow::insertChar()
{
    QPushButton *tempButton = qobject_cast<QPushButton *>(QObject::sender());
    ui->contactEntry->insert(tempButton->text());
}

void MainWindow::CreateLetter(QString letter)
{
    QPushButton *myButton = new QPushButton();
    myButton->sizePolicy().setVerticalPolicy(QSizePolicy::Minimum);
    myButton->sizePolicy().setHorizontalPolicy(QSizePolicy::Minimum);
    myButton->sizeHint().setHeight(10);
    myButton->sizeHint().setWidth(10);
    existingLetterButtons->insert(existingLetterButtons->size(),myButton);
    myButton->setText(letter);
    connect(myButton, SIGNAL(clicked()), this, SLOT(insertChar()));
    lettersLayout->addWidget(myButton, col, row);
    if (row == numberOfLettersPerRow - 1)
    {
        row = 0;
        col++;
    } else {
        row++;
    }
    ui->lettersFrame->setLayout(lettersLayout);
    myButton->show();
}
Main CPP File :

Code:
#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;

#if defined(Q_WS_S60)
    w.showMaximized();
#else
    w.show();
#endif
    return a.exec();
}
__________________
| Developer of Horizontal-Call - Call your contacts, fast! |
| Reverse SSH - access your N900 from anywhere, anytime |
| Using Samsung Galaxy S GT-i9000 and Nokia N900 |
| DonateMe - If you feel I helped you in a very good way, feel free to donate |