KL
Қаң. 30, 2017, 2:26 Т.Ж.

QTableView смена background ячейки

QTableView, background, qss

Подскажите пожалуйста как применит css к ячейкам таблицы? Как установить фиксированные размеры ячеек таблицы?

0

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

17
Evgenii Legotckoi
  • Қаң. 30, 2017, 11 Т.Ж.

Что касается css ячеек, то через установку StyleSheet можно сделать в самом простом варианте, например, если нужно перекрасить ту ячейку, которую отметили, будет такой StyleSheet:

QTableView::item:focus
{
   selection-background-color: yellow;
}

Что касается фиксированного размера, то самый простой способ пройтись по заголовкам таблицы следующими методами:

ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
ui->tableView->setColumnWidth(1, 200);
    KL
    • Қаң. 30, 2017, 2:01 Т.Қ.

    У меня есть массив со значениями NoFollow и Follow. Мне нужно что бы при заполнении модели присваивались зеленый и красные цвета. Общее присвоение это хорошо), но мне хотелось бы узнать для конкретной ячейки.

      Evgenii Legotckoi
      • Қаң. 30, 2017, 2:07 Т.Қ.

      Ну тогда могу предложить наследоваться от QStandardItemModel (у вас же используется QStandardItemModel?) и переопределить метод data. Тут уже иначе никак, поскольку изменение цвета зависит от содержимого model данных.

      Вот здесь есть примерчик по закрашиванию строки в QSqlTableModel , но принцип будет аналогичен.

        KL
        • Қаң. 31, 2017, 1:58 Т.Ж.

        Как присвоить horizontalHeader() размеры? Первому например 400 px, а второму 200px. ui->tableView->setColumnWidth(1, 200); Присваивает размер ячейкам.

          Evgenii Legotckoi
          • Қаң. 31, 2017, 10:24 Т.Ж.

          Не понятный вопрос. Что значит первому horizontalHeader 400px, а второму 200px? Тем более, что изначальный вопрос был как раз про размер ячеек.

          Так что разъясните подробнее, в чем суть вопроса и желательно с примером кода.

            KL
            • Ақп. 1, 2017, 7:25 Т.Қ.
             ui->tableWidget->setRowCount(0);
                ui->tableWidget->setColumnCount(2);
                ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"Ссылки"<<"Follow");
                 ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
                 ui->tableWidget->setColumnWidth(1, 800);
                  ui->tableWidget->setColumnWidth(2, 800);
              KL
              • Ақп. 1, 2017, 7:29 Т.Қ.

              Получаю две верхних колонки нужного размера, остальные идут по умолчанию. Я хочу чтобы все столбцы и колонки были одинакового размера.

                Evgenii Legotckoi
                • Ақп. 1, 2017, 7:34 Т.Қ.

                Я хочу чтобы все столбцы и колонки были одинакового размера.
                Интересное утверждение. А чем собственно отличается столбец от колонки применительно в терминологии таблицы?

                У вас колонок(столбцов) больше в таблице или всё-таки две? Если их больше, ну так и выставляйте размер для каждой, как выставили для первых двух. В чём проблема-то?

                  KL
                  • Ақп. 1, 2017, 7:39 Т.Қ.

                  Я извиняюсь, вышла описка. У меня есть два массива ссылка и присвоенное ей значение follow. Для каждой спарсеной страницы эти значения разные. У меня есть два столбца, а количество строк меняется динамически. Моя задача сделать фиксированным размер колонок для всей таблицы.

                    Evgenii Legotckoi
                    • Ақп. 1, 2017, 7:46 Т.Қ.

                    Прикрепите скриншот что ли... , на котором нарисуйте стрелками, чего добиваетесь. Реально, не понятно, чего хотите. То, что количество строк меняется - то это не должно влиять на ширину ячеек, они же фиксированными заданы через заголовок.

                      KL
                      • Ақп. 1, 2017, 7:49 Т.Қ.

                      Заголовки нормального размера, строки смещены.

                        Evgenii Legotckoi
                        • Ақп. 1, 2017, 7:54 Т.Қ.

                        Что значит смещены строки? Вот эти номера хотели поместить под заголовком Ссылки? Или то, что надписи не посередине?

                          KL
                          • Ақп. 1, 2017, 7:56 Т.Қ.

                          Хочу чтобы красные и зеленые ячейки были одного размера

                            Evgenii Legotckoi
                            • Ақп. 1, 2017, 8:47 Т.Қ.

                            Ну тогда отключить растяжку последней колонки.

                            ui->tableView->horizontalHeader()->setStretchLastSection(false);
                              KL
                              • Ақп. 1, 2017, 8:55 Т.Қ.

                              Так хочу)

                                Evgenii Legotckoi
                                • Ақп. 1, 2017, 9:02 Т.Қ.
                                • Жауап шешім ретінде белгіленді.

                                Вот лентяй)) А)) А подумать немного? )))
                                Ну хоть понятно стало, чего добиваетесь. Давайте-ка я для начала дам Вам направление.

                                Здесь нужно наследоваться от QTableView и переопределять метод resizeEvent . В данном случае можно будет отслеживать ширину таблицы и пересчитывать ширину колонок. То есть ширина будет равна (widthOfTable/2 - widthOfFirstColumn/2)

                                соответственно через метод setColumnWidth будете устанавливать полученную ширину.

                                Без наследования сделать не получится, либо это будет очень уродливо.

                                  KL
                                  • Ақп. 1, 2017, 9:12 Т.Қ.

                                  Я благодарен вам за вашу выдержку) Я вряд ли додумался до такого решения) Мне казалось что это самое простое представление таблицы, а тут не все так просто. Думал что setColumnWidth должно установиться значение для всех колонок.

                                    Пікірлер

                                    Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
                                    Кіріңіз немесе Тіркеліңіз