다음과 같은 모델이 있습니다 (treeView에서).
data1-하나의 유형 hello-두 번째 유형
data1
struct Group
{
QString name;
QList<Sample> samples;
}
안녕하세요
struct Sample
{
QString name;
}
슬롯이 있습니다
void MainWindow::on_treeView_clicked(const QModelIndex &index)
{
Group *group = static_cast<Group *>(index.internalPointer());
ui->lineEdit->setText(group->name);
}
그리고 internalPointer (Group 또는 Sample)에서 선택한 항목 유형을 정확히 알아야합니다. 유형 변환은 항상 발생하기 때문에static_cast<Group *>(index.internalPointer());
주석에서 지적했듯이 모든 트리 항목에 대해 하나의 공통 기본 클래스를 사용하는 것이 좋습니다. 이 기본 클래스는 트리에서 필요한 모든 데이터 (이름, 아이콘, 자식 수 등)에 대한 가상 함수를 선언해야합니다. 그런 다음 그룹 및 샘플과 같은 전문화를 나타내는 파생 클래스에서 재정의해야합니다. 예:
class TreeItem {
public:
virtual QString GroupName() const {return "";} //Returns an empty string as a default value
// any other common functions
}
class Group: public TreeItem {
public:
QString GroupName() const override {return m_name;}
private:
QString m_name;
}
class Sample: public TreeItem {
//Let GroupName() default to the base class implementation, or override if necessary
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다