Просмотр сообщений
|
Страниц: [1] 2
|
1
|
Qt / Пользовательский интерфейс (GUI) / QComboTableItem в Qt5
|
: Ноября 27, 2023, 15:10
|
Добрый день!
Не получается правильно реализовать следующую конструкцию в Qt5:
Код Qt3:
std::set< std::string > Enum; //Допустимые значения
QTable * Table = MyTable; QTableItem *Value_Cell;
QStringList *ComboBoxList = new QStringList(); std::set< std::string >::iterator iter; iter = mydata.Enum.begin(); while(iter != mydata.Enum.end() ) ComboBoxList->append(*iter++ ); QComboTableItem *CBValue_Cell; CBValue_Cell = new QComboTableItem(Table, *ComboBoxList, false); CBValue_Cell->setCurrentItem(MyValue ); Value_Cell = CBValue_Cell; - этот момент интересует как сделать...
Table->insertRows(Table->numRows() ); Table->setText(Table->numRows()-1, 0, текст в 0 столбце ); Table->setItem(Table->numRows()-1, 1, Value_Cell - значение в 1 столбце);
В таблице 0 столбец - параметр, 1 столбец - его значение, которое может быть или string или ComboBox, точно указать, в какой ячейке что - не могу, параметры меняются.
Пробую через setCellWidget : QTableWidgetItem *Value_Cell; QComboBox* ValueBox; QStringList ComboBoxList; Value_Box = new QComboBox(Table); Value_Box->addItems(ComboBoxList); ValueBox->setCurrentText(MyValue); Table->setCellWidget(Table->rowCount()-1,1,Value_Box);
Table->insertRow(Table->rowCount()); Table->setItem(Table->rowCount()-1, 1, Value_Cell);
ComboBox вставляется со сдвигом вниз, не в ту ячейку
|
|
|
2
|
Qt / Вопросы новичков / Как преобразовать число в формат даты?
|
: Мая 30, 2022, 12:27
|
Добрый день! В таблице PostgreeSQL одно из полей "year_end" тип данных character varying(6). После конвертации текстового файла туда записывается значение, допустим '21224'. В LineEdit мне нужно выдать преобразованное значение (xxyyy -> ГГММДД), где 'xx' -год, '21' -тут понятно, а 'xxx' - у нас '224' - количество дней, прошедших с начала года - их надо преобразовать в дату 'ММДД'. Если делать вручную, то 224 - это примерно 7 месяцев и несколько дней, считаем : 224 - (31(янв)+28(фев)+31+30+31+30+31) = 12, итог: 224 это 7 месяцев и 12 дней, или 12 июля. Т.е. преобразование 224 ->0712, LineEdit должен отобразить: 210712.
Прошу помочь в решении данного преобразования, используя методы QDateTime.
|
|
|
3
|
Qt / Вопросы новичков / multicheck in treewidget
|
: Марта 21, 2021, 15:10
|
Добрый день! Понимаю, что тема уже много раз обсуждалась, просьба объяснить на простом примере: treewidget с checkbox, при нажатии на checkbox родителя, отмечаются все checkbox чайлда:
void QMyTree::init() { QTreeWidgetItem *pRootItem = new QTreeWidgetItem(treeWidget); pRootItem->setText(0,tr("Root")); pRootItem->setExpanded(true); for(int i = 0;i<5;i++) { QTreeWidgetItem *pItem = new QTreeWidgetItem(pRootItem); QString textName = "Item" + QString::number(i); pItem->setText(0,textName); pItem->setCheckState(0,Qt::Unchecked); pItem->setExpanded(true); for(int j = 0;j<4;j++) { QTreeWidgetItem *pChildItem = new QTreeWidgetItem(pItem); QString ChildName = "ChildItem" + QString::number(j); pChildItem->setText(0,ChildName); pChildItem->setCheckState(0,Qt::Unchecked); pChildItem->setExpanded(true); } } }
|
|
|
6
|
Qt / Вопросы новичков / транслит русских букв
|
: Февраля 13, 2021, 12:19
|
Добрый день! В Qt3 использовал фукцию транслита (локаль KOI-8), в Qt5 локаль UTF-8, дает warnings:
src/my.cpp:200:7: warning: multi-character character constant [-Wmultichar]
std::string translit(const std::string& r) { std::map<char,std::string> tbl; tbl['А']= "A"; tbl['Б']="B"; tbl['В']="W"; tbl['Г']="G"; ...
std::string ret; for (int i=0; i<(int)r.length(); ++i) { if(tbl.find(r) != tbl.end()) ret+=tbl[r]; else ret+=r; }
Пробовал иcпользовать qPrintable(), не помогает, подскажите плиз, как правильно записать для UTF-8
|
|
|
7
|
Qt / Вопросы новичков / Re: setSpan в Qt5
|
: Декабря 09, 2020, 11:02
|
Ну мне главное, что первый вариант похож на правду, тогда дальше покопаюсь и попробую описать суть проблемы, если она возникнет. Спасибо)
|
|
|
8
|
Qt / Вопросы новичков / Re: setSpan в Qt5
|
: Декабря 09, 2020, 10:54
|
У меня там цикл и условия, эта часть условия так выглядит: for (int j = 0; j < chanel; j++) { ... if(j) { table->setNumRows(table->numRows() + 1); QTableItem*item = table->item(table->numRows()-2,0); item->setSpan(item->rowSpan()+1,1); item->table->item(table->numRows()-2,1); item->setSpan(item->rowSpan()+1,1); item->table->item(table->numRows()-2,2); item->setSpan(item->rowSpan()+1,1); } ... table->setText(table->numRows() - 1, 3, string); }
Целиком тут трудно показать, смысл именно как setSpan приблизить к Qt5
|
|
|
9
|
Qt / Вопросы новичков / Re: setSpan в Qt5
|
: Декабря 09, 2020, 09:55
|
Скорее всего здесь (продолжение кода):
QTableItem*item = table->item(table->numRows()-2,0); item->setSpan(item->rowSpan()+1,1); item->table->item(table->numRows()-2,1); item->setSpan(item->rowSpan()+1,1); item->table->item(table->numRows()-2,2); item->setSpan(item->rowSpan()+1,1);
|
|
|
10
|
Qt / Вопросы новичков / setSpan в Qt5
|
: Декабря 08, 2020, 16:32
|
Господа программисты добрый день.
Запутался немного с переводом QTableWidget, подскажите, по-возможности:
Qt3: QTableItem*item = table->item(table->numRows()-2,0); item->setSpan(item->rowSpan()+1,1);
Qt5: int row = table->rowCount()-2; table->setSpan(row, 0, rowSpan(row, 0)+1, 1);
Дает сообщение: qtableview::setspan span cannot overlap
По-другому сделал:
QTableWidgetItem*item = table->item(table->rowCount()-2,0); table->setSpan(item->row(), item->column(), table->rowSpan(item->row(), item->column())+1, table->columnSpan(item->row(), item->column()));
Ошибка - value()->column() -1
|
|
|
11
|
Qt / Вопросы новичков / QTreeWidgetItem::key
|
: Августа 25, 2020, 11:06
|
Добрый день господа!
Прошу совета - как правильно поменять key для QTreeWidgetItem:
QString sort_key; QString key (int _column, bool _ascending) const { if (sort_key.isNull ()) { return QListViewItem::key (_column, _ascending); } else { return sort_key; } }
Использовать QString::localeAwareCompare?
|
|
|
14
|
Qt / Вопросы новичков / Re: БД в Qt5 (primeInsert(), insert())
|
: Июля 31, 2020, 15:57
|
QSqlQuery query(db);
query.prepare("INSERT INTO prices (id, name, price) " "VALUES (:id, :name, :price)"); query.bindValue(":id", 53981); query.bindValue(":name", "Thindy"); query.bindValue(":price", 105.75); query.exec();
Так правильно?
|
|
|
|
|