마지막 행이 삭제되었을 때 QTableWidget의 셀 위젯이 올바르게 표시되지 않음

Stanton

QPushButtons가 셀 위젯으로있는 QTableWidget이 있습니다. 이 누름 버튼을 테이블에서 행을 삭제하는 수단으로 사용합니다. QPushButtons가 실수로 셀의 중앙에서 이동할 수있는 문제가 있습니다. 아래 이미지는 무슨 일이 일어나고 있는지 보여줍니다.

여기에 이미지 설명 입력

이는 사용자가 1) 테이블의 마지막 행에서 셀을 선택하고, 2) 해당 셀에 삭제 버튼이 포함되어 있으며, 3) 마지막 행이 부분적으로 보이도록 세로 스크롤 막대가 이동 한 특정 경우에 발생합니다. .

아래는이 문제를 일으키는 아주 최소한의 예입니다. 사용자는 스크롤바를 사용하고 한 틱 위로 스크롤 한 다음 마지막 삭제 버튼을 눌러야합니다.

mainwindow.h :

#pragma once

#include <QMainWindow>

class QSignalMapper;
class QTableWidget;
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
    void DeletePressed(int row);

private:
    QSignalMapper* signalMapper_;
    QTableWidget* table_;
};

mainwindow.cpp :

#include "mainwindow.h"

#include <QGridLayout>
#include <QSignalMapper>
#include <QTableWidget>
#include <QPushButton>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    signalMapper_(new QSignalMapper(this)),
    table_(new QTableWidget())
{
    setCentralWidget( new QWidget );
    this->setFixedSize(200,300);

    QGridLayout *layout = new QGridLayout(centralWidget());
    layout->addWidget(table_);

    table_->setRowCount(0);
    table_->setColumnCount(1);

    // if you comment out the following line then the problem is not present
    table_->setSelectionMode(QAbstractItemView::SingleSelection);

    for (int i = 0; i < 20; i++) {
        table_->insertRow(i);
        QPushButton *button = new QPushButton("Delete");
        connect(button, SIGNAL(clicked(bool)), signalMapper_, SLOT(map()));
        signalMapper_->setMapping(button, i);
        table_->setCellWidget(i, 0, button);
    }
    connect(signalMapper_, SIGNAL(mapped(int)), this, SLOT(DeletePressed(int)));

    table_->setCurrentCell(19,0);
}

MainWindow::~MainWindow()
{
}

void MainWindow::DeletePressed(int row)
{
    table_->clearSelection(); // <- added clear selection before remove row
    table_->removeRow(row);
}

main.cpp :

#include <QApplication>
#include "mainwindow.h"

int main( int argc, char* argv[] )
{
    QApplication app(argc, argv);
    MainWindow wnd;
    wnd.show();
    return app.exec();
}

문제는 새로운 선택이 이루어질 때 선택한 셀을 계속 표시하려는 QTableWidget에서 비롯된 것이라고 생각합니다. 여기에 게시 된 두 가지 답변을 모두 시도했지만 내 문제가 해결되지 않았습니다.

누구든지이 문제를 해결하는 방법을 알려 주시면 도움을 주시면 감사하겠습니다.

jpo38

나는 오래 전에 비슷한 문제 QtreeWidget가 있었고 callig 보호 방법으로 해결했습니다 updateGeometries().

특수화하지 않은 QTableView경우이 함수를 단순히 호출 할 수 없습니다 (보호되어 있으므로). 여기에 간단하게 수행하는 트릭이 있습니다.

class MyQTableView : public QTableView
{
public:
    inline void publicUpdateGeometries() { updateGeometries(); }
};

void MainWindow::DeletePressed(int row)
{
    table_->clearSelection(); // <- added clear selection before remove row
    table_->removeRow(row);

    // call the protected method QTableView::updateGeometries()
    ((MyQTableView*) table_)->publicUpdateGeometries();
}

이것이 문제를 해결할 수 있기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Wordpress (Genesis) 위젯 열이 올바르게 표시되지 않음

분류에서Dev

pydev의 주석이 올바르게 표시되지 않음

분류에서Dev

지침에 넣을 때 모달이 올바르게 표시되지 않음

분류에서Dev

노트북이 연결되었을 때 창 제목 표시 줄이 13.10으로 올바르게 표시되지 않음

분류에서Dev

게시물의 댓글이 레일에 올바르게 표시되지 않음

분류에서Dev

swift : TableView 셀이 올바르게 선택되지 않음

분류에서Dev

Google지도의 폴리 라인이 올바르게 표시되지 않음

분류에서Dev

캔버스의 이미지 너비가 올바르게 표시되지 않음

분류에서Dev

패널 제목이 올바르게 표시되지 않음

분류에서Dev

관련 제품이 올바르게 표시되지 않음

분류에서Dev

행의 마지막 잠금 해제 된 셀을지나 이동할 때 다음 행으로 줄 바꿈 방지

분류에서Dev

배경 이미지가 올바르게 표시되지 않음

분류에서Dev

Excel에서 시간이 올바르게 표시되지 않음

분류에서Dev

Java : 배열의 첫 번째 항목이 올바르게 표시되지 않음

분류에서Dev

settext의 백분율 형식이 올바르게 표시되지 않음

분류에서Dev

SearchController가 활성 상태 일 때 CollectionView 사용자 지정 셀이 올바르게 업데이트되지 않음

분류에서Dev

HTML이 올바르게 설정되었지만 표시되지 않음

분류에서Dev

UIButton의 제목 속성이 올바르게 기록되지만 버튼을 하위보기로 추가 할 때 표시되지 않습니다.

분류에서Dev

SVG 아이콘이 올바르게 표시되지 않음

분류에서Dev

이온 탭 색상이 올바르게 표시되지 않음

분류에서Dev

CSS 레이아웃이 올바르게 표시되지 않음

분류에서Dev

border-collapse시 셀 너비 속성이 올바르게 복사되지 않음

분류에서Dev

geom_boxplot이 올바르게 표시되지 않음

분류에서Dev

Django Wagtail TableBlock이 올바르게 표시되지 않음

분류에서Dev

Packagist에서 Github 별이 올바르게 표시되지 않음

분류에서Dev

DateTime 형식이 올바르게 표시되지 않음

분류에서Dev

Python 형식이 올바르게 표시되지 않음

분류에서Dev

JavaScript 출력이 올바르게 표시되지 않음

분류에서Dev

목록 항목이 올바르게 표시되지 않음

Related 관련 기사

  1. 1

    Wordpress (Genesis) 위젯 열이 올바르게 표시되지 않음

  2. 2

    pydev의 주석이 올바르게 표시되지 않음

  3. 3

    지침에 넣을 때 모달이 올바르게 표시되지 않음

  4. 4

    노트북이 연결되었을 때 창 제목 표시 줄이 13.10으로 올바르게 표시되지 않음

  5. 5

    게시물의 댓글이 레일에 올바르게 표시되지 않음

  6. 6

    swift : TableView 셀이 올바르게 선택되지 않음

  7. 7

    Google지도의 폴리 라인이 올바르게 표시되지 않음

  8. 8

    캔버스의 이미지 너비가 올바르게 표시되지 않음

  9. 9

    패널 제목이 올바르게 표시되지 않음

  10. 10

    관련 제품이 올바르게 표시되지 않음

  11. 11

    행의 마지막 잠금 해제 된 셀을지나 이동할 때 다음 행으로 줄 바꿈 방지

  12. 12

    배경 이미지가 올바르게 표시되지 않음

  13. 13

    Excel에서 시간이 올바르게 표시되지 않음

  14. 14

    Java : 배열의 첫 번째 항목이 올바르게 표시되지 않음

  15. 15

    settext의 백분율 형식이 올바르게 표시되지 않음

  16. 16

    SearchController가 활성 상태 일 때 CollectionView 사용자 지정 셀이 올바르게 업데이트되지 않음

  17. 17

    HTML이 올바르게 설정되었지만 표시되지 않음

  18. 18

    UIButton의 제목 속성이 올바르게 기록되지만 버튼을 하위보기로 추가 할 때 표시되지 않습니다.

  19. 19

    SVG 아이콘이 올바르게 표시되지 않음

  20. 20

    이온 탭 색상이 올바르게 표시되지 않음

  21. 21

    CSS 레이아웃이 올바르게 표시되지 않음

  22. 22

    border-collapse시 셀 너비 속성이 올바르게 복사되지 않음

  23. 23

    geom_boxplot이 올바르게 표시되지 않음

  24. 24

    Django Wagtail TableBlock이 올바르게 표시되지 않음

  25. 25

    Packagist에서 Github 별이 올바르게 표시되지 않음

  26. 26

    DateTime 형식이 올바르게 표시되지 않음

  27. 27

    Python 형식이 올바르게 표시되지 않음

  28. 28

    JavaScript 출력이 올바르게 표시되지 않음

  29. 29

    목록 항목이 올바르게 표시되지 않음

뜨겁다태그

보관