Hej,
Jestem begginers z qt. Chcialabym dodawac do listy dynamicznie nowe itemy.
Tzw. po kliknieciu button-a, aby w combobox pojawil sie nowy item (np. najlepiej na poczek z indexem 0/1, nowe itemy na poczatek listy).
Napisalam juz ponizszy kod ale cos jest zle ;/, nie wiem gdzie robiee blad.
Tutaj zamieszczam moj kod :
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtGui/QComboBox>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void addNewItem(int index);
private:
Ui::MainWindow *ui;
QComboBox *combo;
QList<QStringList> attributeList;
QList<QString> aList;
QSize comboSize;
int separatorPoz;
int index;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QtGui"
#include "QList"
#include <QWidget>
#include <QVBoxLayout>
#include <QLabel>
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow)
{
ui->setupUi(this);
QList<QStringList> attributeList;
QList<QString> aList;
QWidget *win = new QWidget;
QVBoxLayout *layout = new QVBoxLayout;
QComboBox* combo = new QComboBox();
QPushButton *button = new QPushButton("Add item to combobox");
combo->setFocusPolicy(Qt::NoFocus);
aList.append("Solid");
aList.append("Select File");
attributeList.append(aList);
combo->addItem("Solid");
combo->addItem("Select file");
comboSize = combo->size();
combo->insertSeparator(aList.size()-1);
combo->setCurrentIndex(0);
QObject::connect(button,SIGNAL(clicked()),combo, SLOT(addNewItem(int)));
layout->addWidget(combo);
layout->addWidget(button);
win->setLayout(layout);
win->showMaximized();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::addNewItem(int index)
{
index = aList.size()+1;
aList.append("File %1" + QString::number(aList.size()));
attributeList.append(aList);
QString newItem = "File %1" + QString::number(aList.size());
combo->addItem(newItem);
combo->update();
}
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QWidget>
#include <QVBoxLayout>
#include <QLabel>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
return a.exec();
}
Bede wdzieczna za kazda pomoc :)