def createEditor(self, parent: QWidget, option: QStyleOptionViewItem,
                  index: QModelIndex) -> QWidget:
     editor = QDoubleSpinBox(parent)
     editor.setFrame(False)
     editor.setRange(self.__min, self.__max)
     editor.setDecimals(self.__decimals)
     return editor
Beispiel #2
0
    def _add_record_view(self, record: PatientBoneAgeRecord):
        row = self.rowCount()
        self.insertRow(row)
        self._records_rows[record] = row

        name = '' if record.image is None else record.image.path.stem
        name_item = QTableWidgetItem(name)
        name_item.setTextAlignment(Qt.AlignCenter)
        # Add the |record| reference to the |name_item|
        name_item.setData(TableItemDataRole.RECORD_REF, record)
        self.setItem(row, self.column_number(TableNameColumn), name_item)

        gender_widget = GenderWidget(embedded=True)
        gender_widget.man = record.male
        gender_widget.gender_changed.connect(
            partial(self._on_gender_changed, record))
        record.male_changed.connect(
            partial(self._on_record_male_changed, gender_widget))
        self.setCellWidget(row, self.column_number(TableGenderColumn),
                           gender_widget)

        birthdate_edit_widget = DateEditWidget(record.birthdate, embedded=True)
        birthdate_edit_widget.dateChanged.connect(
            partial(self._on_birthdate_changed, record))
        self.setCellWidget(row, self.column_number(TableBirthdateColumn),
                           birthdate_edit_widget)

        image_date_edit_widget = DateEditWidget(record.image_date,
                                                embedded=True)
        image_date_edit_widget.dateChanged.connect(
            partial(self._on_image_date_changed, record))
        self.setCellWidget(row, self.column_number(TableImageDateColumn),
                           image_date_edit_widget)

        age_in_image_item = QTableWidgetItem()
        age_in_image_item.setFlags(age_in_image_item.flags()
                                   & ~Qt.ItemIsEditable)
        age_in_image_item.setTextAlignment(Qt.AlignCenter)
        record.age_in_image_changed.connect(
            partial(self._set_age_to_table_item, age_in_image_item))
        self.setItem(row, self.column_number(TableAgeInImageColumn),
                     age_in_image_item)

        bone_age_item = QTableWidgetItem()
        bone_age_item.setFlags(bone_age_item.flags() & ~Qt.ItemIsEditable)
        record.bone_age_changed.connect(
            partial(self._set_age_to_table_item, bone_age_item))
        record.skeletal_development_rate_changed.connect(
            partial(self._on_skeletal_development_rate_changed, record))
        self.setItem(row, self.column_number(TableDenseNetBoneAgeColumn),
                     bone_age_item)
        self._update_bone_age_table_item_foreground(record)

        height_spin_box = QDoubleSpinBox()
        height_spin_box.setAlignment(Qt.AlignCenter)
        height_spin_box.setFrame(False)
        height_spin_box.setDecimals(1)
        height_spin_box.setMaximum(300)
        self._set_height_to_table_item_widget(height_spin_box, record.height)
        record.height_changed.connect(
            partial(self._set_height_to_table_item_widget, height_spin_box))
        height_spin_box.valueChanged.connect(
            partial(self._on_height_table_item_widget_value_changed, record))
        self.setCellWidget(row, self.column_number(TableHeightColumn),
                           height_spin_box)

        max_height_item = QTableWidgetItem()
        max_height_item.setFlags(max_height_item.flags() & ~Qt.ItemIsEditable)
        max_height_item.setTextAlignment(Qt.AlignCenter)
        self._set_max_height_to_table_item(max_height_item, record.max_height)
        record.max_height_changed.connect(
            partial(self._set_max_height_to_table_item, max_height_item))
        self.setItem(row, self.column_number(TableMaxHeightColumn),
                     max_height_item)

        self._update_age_column_contents_for_row(row)