Russian Qt Forum
Апрель 26, 2024, 15:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [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);   
        }
    }
}
4  Qt / Вопросы новичков / Re: транслит русских букв : Февраль 13, 2021, 13:38
Огромное спасибо)
5  Qt / Вопросы новичков / Re: транслит русских букв : Февраль 13, 2021, 12:33
и такой еще warning дает:
warning: overflow in implicit constant conversion [-Woverflow]
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?
12  Qt / Вопросы новичков / Re: БД в Qt5 (primeInsert(), insert()) : Июль 31, 2020, 16:45
Ок. Спасибо)
13  Qt / Вопросы новичков / Re: БД в Qt5 (primeInsert(), insert()) : Июль 31, 2020, 16:12
Это как пример, а так база у меня postgresql 9.4.5 (с соединением разобрался, все нормально). Она вроде поддерживает ?
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();

Так правильно?
15  Qt / Вопросы новичков / БД в Qt5 (primeInsert(), insert()) : Июль 31, 2020, 15:08
Доброго времени суток!

Прошу помощи  - никак не могу разобраться с следующим кодом (Qt3), для примера возьмем из документации:
https://doc.qt.io/archives/3.3/qsqlcursor.html#insert:

QSqlCursor cur( "prices" );
QSqlRecord *buffer = cur.primeInsert();
buffer->setValue( "id",    53981 );
buffer->setValue( "name",  "Thingy" );
buffer->setValue( "price", 105.75 );
cur.insert();

Как это написать в Qt5? (не совсем понял primeInsert(), insert())






Страниц: [1] 2

Страница сгенерирована за 0.057 секунд. Запросов: 23.