QTABLEWIDGET: Como posso obter linhas mais rígidas com o preenchimento de espaçamento menos vertical?

StackOverflow https://stackoverflow.com/questions/2179215

  •  24-09-2019
  •  | 
  •  

Pergunta

o Qtablewdiget é fabuloso para exibições simples de grade. Mudar cores, fontes, etc, é direto.

No entanto, não consegui dar à grade uma aparência 'mais apertada' com um espaço em branco menos vertical. Vejo que a documentação do QT fala (por exemplo, aqui) cerca de

  • margem
  • fronteira
  • preenchimento

em torno de widgets, mas quando eu os defina, só recebo alterações em torno de todo Widget da grade em vez de dentro.

Como posso definir isso (com uma folha de estilo ou opções codificadas) diretamente para tornar o monitor QTableWidget mais apertado?

Foi útil?

Solução

O código obtendo 'H' pode ser doentio. Foi só um exemplo. Copie e cole o seguinte código bastante rudimentar. Altere o valor em "setDefaultSectionSize ()", recompile e execute. Você deveria ver a diferença. Definir isso para 10 ou 50 rendimentos visíveis resultados. No código acima, é possível que o QFONTMETRICS ou QFONT esteja bagunçando algo.

Você pode usar o que quiser para obter a altura, mas o tamanho da fonte faz mais sentido.

#include <QtGui>

int main( int argc, char* argv[] )
{
 QApplication app( argc, argv );

 QDialog* my_dialog  = new QDialog();
 QHBoxLayout* layout  = new QHBoxLayout();
 QTableWidget* my_table_widget = new QTableWidget( my_dialog );

 my_table_widget->setRowCount( 10 );
 my_table_widget->setColumnCount( 10 );
 my_table_widget->verticalHeader()->setDefaultSectionSize( 15 );
 layout->addWidget( my_table_widget );
 my_dialog->setLayout( layout );
 my_dialog->resize( 500, 200 );
 my_dialog->show();

 return app.exec();
}

EDIT: Não sei como formatar um bloco de código aqui ... Perdoe -me. :)

Editar 2: Eu consertei isso, e o seguinte simples tighterTable.pro o arquivo ajuda junto.

TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .

SOURCES += tighterTable.cpp    # if that is the filename

Obrigado um grande grupo gordo por isso. BTW: A edição como código está apenas recuando por quatro espaços e/ou pressionando o botão com o pequeno '101010' na linha de formatação.

Outras dicas

O que você está procurando tem uma solução muito boba IMHO, mas funciona. Você precisa definir os membros padrão dos cabeçalhos (). Acessado via verticalHeader () e HorizontalHeader (). Eu realmente nunca defino a largura da coluna com este b/ c a maioria dos meus projetos me envolve adicionando linhas, não colunas, e eu apenas chamo o ResazecolumnToContentents ou faço um redimensionamento manual. No entanto, as linhas são irritantes. Geralmente, recebo a altura da fonte usando o QFontMetrics e adiciono 2. Qualquer linha subsequente adicionada deve ter essa altura e Viola: aparência mais rígida.

Espero que ajude.

EDITAR:

Código não testado:

QFontMetrics fm( my_font );
int h = fm.height() + 2;
my_table->verticalHeader()->setDefaultSectionSize( h );

QtableWidget é um modelo de conveniência e visualização. Tipicamente, QAbstractItemModelO método de dados () fornece um Sizehintrole Isso é usado para dizer a visualização qual deve ser o tamanho de cada célula.

Como você está usando o QTableWidget, não acho que haja nada que você possa fazer para alterar a dica de tamanho que está sendo retornada por seu modelo interno. Mesmo o Documentação da folha de estilo QT não menciona nada nessa área.

QtableWidget -> verticalHeader -> setMinimumSecimentosize () é o caminho certo e pode ser definido na interface do usuário.

Eu tentei todas as respostas aqui sem sucesso. O que funcionou para mim foi definir Ambas a seguir.

    table->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents)
    table->verticalHeader()->setMaximumSectionSize(10)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top