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

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выравнивание QTableWidget по центру в QDialog  (Прочитано 7884 раз)
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« : Август 12, 2016, 16:32 »

Здравствуйте
Есть таблица QTableWidget в окне QDialog.
Подскажите пожалуйста, как разместить ее, выровняв по горизонтали
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Август 12, 2016, 16:46 »

в смысле по центру что ли?
это Layouts.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« Ответ #2 : Август 12, 2016, 16:50 »

Да, по центру
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Август 12, 2016, 17:05 »

QDialog* myDialog;
QTableWidget* myTable;
...

QHBoxLayout* l = new QHBoxLayout(myDialog);
l->addWidget(myTable);

как то так
« Последнее редактирование: Август 12, 2016, 20:16 от Racheengel » Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #4 : Август 12, 2016, 19:12 »

QDialog* myDialog;
QTableWidget* myTable;
...

QHorizontalLayout* l = new QHorizontalLayout(myDialog);
l->addWidget(myTable);

как то так

Только QHBoxLayout
« Последнее редактирование: Август 15, 2016, 19:42 от gil9red » Записан

YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« Ответ #5 : Август 15, 2016, 11:08 »

Надо, чтобы таблица была сверху (в первой строке QHBoxLayout), и выровнена по центру. Я пробую, и у меня получается, что виджет больше таблицы. Во вложении скриншот получившегося окна. Как это исправить?

    QDialog * dialog = new QDialog;

    // “аблица
    QTableWidget *tableWidget = new QTableWidget(1,9,this);                 // таблица с 1 строкой и 9 колонками
    tableWidget->setHorizontalHeaderLabels(QString                          // установка заголовков таблицы
             ("Логические;Байтовые;Целые;Длинные целые;"
              "Вещественные;Строковые;Массив;Таймер;Всего").split(";"));
    tableWidget->verticalHeader()->setVisible(false);                       // скрытие вертикальных заголовков таблицы
    // установка значений в €чейки таблицы
    tableWidget->setItem(0,0,new QTableWidgetItem(QString::number(12)));    // количество логических переменных
    tableWidget->setItem(0,1,new QTableWidgetItem(QString::number(45)));    // количество байтовых переменных
    tableWidget->setItem(0,2,new QTableWidgetItem(QString::number(5)));     // количество целых переменных
    tableWidget->setItem(0,3,new QTableWidgetItem(QString::number(66)));    // количество длинных целых переменных
    tableWidget->setItem(0,4,new QTableWidgetItem(QString::number(Крутой));     // количество вещественных переменных
    tableWidget->setItem(0,5,new QTableWidgetItem(QString::number(4)));     // количество строковых переменных
    tableWidget->setItem(0,6,new QTableWidgetItem(QString::number(23)));    // количество переменных типа "массив"
    tableWidget->setItem(0,7,new QTableWidgetItem(QString::number(Крутой));     // количество таймерных переменных
    tableWidget->setItem(0,8,new QTableWidgetItem(QString::number(171)));   // общее количество переменных
    tableWidget->resizeColumnsToContents();                                 // выравнивание колонок по содержимому
    //выравнивание содержимого €чеек по центру
    tableWidget->item(0,0)->setTextAlignment(Qt::AlignCenter);
    tableWidget->item(0,1)->setTextAlignment(Qt::AlignCenter);
    tableWidget->item(0,2)->setTextAlignment(Qt::AlignCenter);
    tableWidget->item(0,3)->setTextAlignment(Qt::AlignCenter);
    tableWidget->item(0,4)->setTextAlignment(Qt::AlignCenter);
    tableWidget->item(0,5)->setTextAlignment(Qt::AlignCenter);
    tableWidget->item(0,6)->setTextAlignment(Qt::AlignCenter);
    tableWidget->item(0,7)->setTextAlignment(Qt::AlignCenter);
    tableWidget->item(0,8)->setTextAlignment(Qt::AlignCenter);
    QHBoxLayout *hBoxLayout = new QHBoxLayout(dialog);
    hBoxLayout->addWidget(tableWidget,Qt::AlignVCenter,Qt::AlignTop);
    dialog->exec();
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Август 15, 2016, 11:38 »

Что-то не так с SizePolicy. Часто удобно добиться желаемого в QDesigner и посмотреть созданный им код
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #7 : Август 15, 2016, 16:09 »

Код
C++ (Qt)
tableWidget->resizeColumnsToContents();                                 // выравнивание колонок по содержимому
вот тут собака зарыта как минимум
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Август 16, 2016, 06:27 »

Я пробую, и у меня получается, что виджет больше таблицы. Во вложении скриншот получившегося окна. Как это исправить?
Судя по картинке с виджетом все норм. Возможно Вы хотите чтобы колонки таблицы покрывали весь виджет, т.е. не было бы свободного места справа. Тогда хотя бы одной колонке надо дать setSectionResizeMode(index, QHeaderView::Stretch)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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