سؤال

ما زلت أتعلم QT وأنا مدين للمجتمع So لتزويدني بإجابات رائعة في الوقت المناسب على أسئلتي QT. شكرًا لك.

أنا مرتبك تمامًا من فكرة إضافة رأس إلى أ QTableWidget. ما أود القيام به هو وجود جدول يحتوي على معلومات حول أعضاء الفريق. كل row يجب أن يحتوي العضو على اسمه الأول والأخير ، كل في زنزانته الخاصة ، وعنوان بريد إلكتروني في خلية واحدة ، ومكتب في الخلية الأخرى. سأحصل على ملف header فوق هذه الأعمدة لتسميةها حسب الاقتضاء.

أحاول أن أبدأ بسهولة وأحصل على رأس فقط لعرض "Last" (كما في الاسم الأخير). ها هو الكود الخاص بي.

int column = m_ui->teamTableWidget->columnCount();
m_ui->teamTableWidget->setColumnCount(column+1);
QString* qq = new QString("Last");
m_ui->teamTableWidget->horizontalHeader()->model()->setHeaderData(0, 
Qt::Horizontal, QVariant(QVariant::String, &qq));

يتم تقديم طاولتي بصراحة ، لكن الرأس لا يحتوي على ما أتوقعه. أنه يحتوي على خلية واحدة تحتوي على النص "1".

من الواضح أنني أفعل شيئًا سخيفًا جدًا هنا هذا خطأ ، لكنني ضائع. ما زلت أتدفق على الوثائق ، وأجد شيئًا.

شكرا على اي وكل مساعدة.

هل كانت مفيدة؟

المحلول 3

بناءً على طلب الشخص الذي توجهني نحو المكان الصحيح ، أقوم بنشر الطريقة التي أنجزت بها كإجابة وأنا أقبلها.

    m_ui->teamTableWidget->setColumnCount(m_ui->teamTableWidget->columnCount()+1);
    QTableWidgetItem* qtwi = new QTableWidgetItem(QString("Last"),QTableWidgetItem::Type);
    m_ui->teamTableWidget->setHorizontalHeaderItem(0,qtwi);

نصائح أخرى

أسهل حل setHorizontalHeaderLabels(myListOfHeaderLabels).

أرى مشكلة واحدة محتملة ، وأيضًا طريقة أسهل للقيام بذلك.

أولا ، المشكلة:

QString* qq = new QString("Last"); // <- qq is a pointer to a string.
m_ui->teamTableWidget->horizontalHeader()->model()->setHeaderData(0, 
    Qt::Horizontal, 
    QVariant(QVariant::String, &qq)); // <- You take the address of a pointer, or create a handle.

أعتقد أنك تريد أن تفعل هذا بدلاً من ذلك:

QString* qq = new QString("Last");
m_ui->teamTableWidget->horizontalHeader()->model()->setHeaderData(0, 
    Qt::Horizontal, QVariant(QVariant::String, *qq));

الآن ، الطريقة أسهل لتعيين البيانات لعنصر الرأس:

m_ui->teamTableWidget->horizontalHeaderItem( 0 )->setText( "Last" );

للأجيال القادمة:

لا تفعل العوامل الافتراضية لـ SetheaderData () و HeaderData () في QabstractItemModel أي شيء. يمكنك (يجب أن؟) (إعادة) headerdata () من أجل إرجاع علامة مفيدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top