Название: TreeWidget
Отправлено: Aswed от Сентябрь 12, 2011, 18:34
Всем приветы. Мне нужно поместить элемент в список код: rezult = new QTreeWidget; . . .
QTreeWidgetItem* newab = new QTreeWidgetItem(rezult); QByteArray buf = ab.FIO.toAscii(); newab->setText(0,buf.data()); newab->setText(1,itoa(ab.school,3)); newab->setText(2,itoa(ab.age,3)); if (ab.sex==1) newab->setText(3,"M"); else newab->setText(3,"W"); что я делаю не так?
Название: Re: TreeWidget
Отправлено: kambala от Сентябрь 12, 2011, 19:09
C++ (Qt) rezult->addTopLevelItem(newab);
а зачем вот эти сложности с ФИО и числами (я правда не понимаю что это за второй параметр такой у itoa()), если можно просто C++ (Qt) newab->setText(0, ab.FIO); newab->setText(1, QString::number(ab.school); newab->setText(2, QString::number(ab.age));
Название: Re: TreeWidget
Отправлено: Aswed от Сентябрь 12, 2011, 19:40
C++ (Qt) rezult->addTopLevelItem(newab);
а зачем вот эти сложности с ФИО и числами (я правда не понимаю что это за второй параметр такой у itoa()), если можно просто Компилер пишет, что нет такой функции( itoa- int to char, второй параметр- разрядность числа. Функция самодельная).
Название: Re: TreeWidget
Отправлено: kambala от Сентябрь 12, 2011, 19:54
Компилер пишет, что нет такой функции(
значит rezult объявлен не как QTreeWidget *. в таком случае C++ (Qt) static_cast<QTreeWidget *>(rezult)->addTopLevelItem(newab);
itoa- int to char, второй параметр- разрядность числа. Функция самодельная).
C++ (Qt) newab->setText(1, QString::number(ab.school, 3);
Название: Re: TreeWidget
Отправлено: Aswed от Сентябрь 12, 2011, 20:05
C++ (Qt) QTreeWidgetItem* newab = new QTreeWidgetItem(rezult); rezult->addTopLevelItem(newab); newab->setText(0,ab.FIO); newab->setText(1,QString::number(ab.school)); newab->setText(2,QString::number(ab.age)); if (ab.sex==1) newab->setText(3,"M"); else newab->setText(3,"W"); rezult->addTopLevelItem(newab);
Все компилится, но элемент не добавляется
Название: Re: TreeWidget
Отправлено: kambala от Сентябрь 12, 2011, 20:15
2 раза добавлять элемент не нужно
должно работать. что происходит перед этим? надо больше кода.
Название: Re: TreeWidget
Отправлено: Aswed от Сентябрь 12, 2011, 20:31
C++ (Qt) #include <QtGui> #include "form.h" #include "abiturient.h" #include "operations.h" Window::Window(QWidget *parent) : QDialog(parent) { //Объявление setWindowTitle(trUtf8("Многосвязные списки")); agel = new QLabel(trUtf8("Возраст")); age = new QSpinBox; schooll = new QLabel(trUtf8("Школа")); school = new QSpinBox; FIOl = new QLabel(trUtf8("ФИО")); FIO = new QLineEdit; sexl = new QLabel(trUtf8("Пол")); sex = new QComboBox; sex->addItem(QString::fromAscii("Male")); sex->addItem(QString::fromAscii("Female")); rezult = new QTreeWidget;//Вывод ввиде списка, сделан по типу qt3 QStringList labels;//да будут колонки labels<<trUtf8("ФИО")<<trUtf8("Школа")<<trUtf8("Возраст")<<trUtf8("Пол");//собстно они rezult->setHeaderLabels(labels);//ввести колонка в списка searchButton = new QPushButton(trUtf8("&Поиск")); addButton = new QPushButton(trUtf8("&Добавить")); delButton = new QPushButton(trUtf8("&Удалить")); //Signals connect(addButton, SIGNAL(clicked), this, SLOT(addpress));//+1 connect(delButton, SIGNAL(clicked), this, SLOT(delpress));//-1 connect(searchButton, SIGNAL(clicked), this, SLOT(serchpress)); //Компоновка QVBoxLayout* Vl = new QVBoxLayout; Vl->addWidget(agel); Vl->addWidget(age); Vl->addWidget(schooll); Vl->addWidget(school); Vl->addWidget(FIOl); Vl->addWidget(FIO); Vl->addWidget(sexl); Vl->addWidget(sex); Vl->addStretch(); QVBoxLayout* Vr = new QVBoxLayout; Vr->addWidget(searchButton); Vr->addWidget(addButton); Vr->addWidget(delButton); Vr->addStretch(); QHBoxLayout* mL = new QHBoxLayout; mL->addLayout(Vl); mL->addWidget(rezult); mL->addLayout(Vr); setLayout(mL); } void Window::addpress() { abiturient ab; ab.age = age->value(); ab.school = school->value(); ab.FIO = FIO->text(); ab.sex = sex->currentIndex(); // push(ab); QTreeWidgetItem* newab = new QTreeWidgetItem(rezult); rezult->addTopLevelItem(newab); newab->setText(0,ab.FIO); newab->setText(1,QString::number(ab.school)); newab->setText(2,QString::number(ab.age)); if (ab.sex==1) newab->setText(3,"M"); else newab->setText(3,"W"); rezult->addTopLevelItem(newab); }
Название: Re: TreeWidget
Отправлено: cya-st от Сентябрь 12, 2011, 22:13
Попробуй result->insertTopLevelItems(0, newab); вместо rezult->addTopLevelItem(newab);
Название: Re: TreeWidget
Отправлено: Aswed от Сентябрь 12, 2011, 23:07
Попробуй result->insertTopLevelItems(0, newab); вместо rezult->addTopLevelItem(newab); Все равно не работает
Название: Re: TreeWidget
Отправлено: SeverusSnape от Сентябрь 13, 2011, 09:06
Сделайте так: QTreeWidget*rezult = new QTreeWidget(this); // для примера QTreeWidgetItem *newab = new QTreeWidgetItem(rezult); newab->setText(0,ab.FIO); newab->setText(1,QString::number(ab.school)); newab->setText(2,QString::number(ab.age)); if (ab.sex==1) newab->setText(3,"M"); else newab->setText(3,"W"); rezult->addTopLevelItem(newab); не совсем понятно зачем вы дважды пытаетесь вставить итем
|