PDA

View Full Version : QTableWidget و ویجت سفارشی



pswin.pooya
پنج شنبه 15 خرداد 1393, 16:41 عصر
سلام دوستان

بعد از کلی سروکله زدن با QTableView بیخیالش شدم و رفتم سراغ QTableWidget حالا اینجا یکی از مشکلاتی که دارم اضافه کردن ویجت سفارشی هست که به شکلی که مثل delgate ها دو مد ویرایشی و نمایشی داشته باشه. کسی تا حالا ویجتی ساخته که اینجوری باشه؟!

alamate_aoal
پنج شنبه 15 خرداد 1393, 23:01 عصر
سلام
منظورتون یه چیزی شبیه شکل زیر که از مثال های کیوته، هست؟
119935

pswin.pooya
جمعه 16 خرداد 1393, 14:57 عصر
منظورتون یه چیزی شبیه شکل زیر که از مثال های کیوته، هست؟
سلام
بله.

یه مورد دیگه هم پیدا کردم. وقتی جدول رو پاک میکنم و دوباره لودش میکنم. برنامه کرش میکنه. مشکل از لود کردن و یا اضافه کردن ستون و داده نیست. بعد از اینکه از تابع لود میاد بیرون و میخواد نمایش بده کرش میکنه. فکر می کنم درست ستونها و داده ها رو پاک نمی کنم. برای پاک کردن من از متد clear استفاده میکنم و ردیفها و ستونها رو هم بعدش دستی پاک میکنم. اما جواب نمی ده. این کد پاک کردن من هست:




ui->tbl_effects->clear();

while ( ui->tbl_effects->rowCount() > 0)
{
removeRowByIndex( 0 );
}

while ( ui->tbl_effects->columnCount() > 0)
{
ui->tbl_effects->removeColumn(0);
}

کامبیز اسدزاده
جمعه 16 خرداد 1393, 18:32 عصر
سلام دوستان

بعد از کلی سروکله زدن با QTableView بیخیالش شدم و رفتم سراغ QTableWidget حالا اینجا یکی از مشکلاتی که دارم اضافه کردن ویجت سفارشی هست که به شکلی که مثل delgate ها دو مد ویرایشی و نمایشی داشته باشه. کسی تا حالا ویجتی ساخته که اینجوری باشه؟!

سلام

شما تعداد ستون هارو برای به روز رسانی با کد نویسی ارسال میکنید یا در طراحی تعداد ستون هارو مشخص میکنید؟
به این مورد هم دقت کنید تعداد عناوین ستون ها باید دقیقا با تعداد رکوردهایی که وارد اون میشه برابری کنه حتی اگه یکیش کمو زیاد باشه کرش میکنه.

مثلا اگه قراره نام و نام خانوادگی رو نمایش بده حتما باید فقط و فقط name و family برای Table ارسال بشه در C#‎‎ چنین نیست منم به ذهنم نمیرسید ولی در این محیط به این موارد ریز هم حساسیت نشون میده یه بررسی کنید شاید مشکل این باشه.
درضمن کد هاتون رو نمیتونم ببینم درست HTML نشون نمیده اصلاحش کنید.

pswin.pooya
جمعه 16 خرداد 1393, 18:48 عصر
شما تعداد ستون هارو برای به روز رسانی با کد نویسی ارسال میکنید یا در طراحی تعداد ستون هارو مشخص میکنید؟

با کد


به این مورد هم دقت کنید تعداد عناوین ستون ها باید دقیقا با تعداد رکوردهایی که وارد اون میشه برابری کنه حتی اگه یکیش کمو زیاد باشه کرش میکنه.
مشکل تعداد ستونها نیست. برای دفعه دوم که میخوام لود کنم. خطا میده.


درضمن کد هاتون رو نمیتونم ببینم درست HTML نشون نمیده اصلاحش کنید.
ممنون که اطلاع دادید. اصلاحش کردم.


یه پروژه رو کلا انجام دادم. تنها قسمتیش که مونده همینه. فکر میکنم ایراد از پاک کردن داده های جدوله و یا اینکه از setCellWidget هست.

alamate_aoal
جمعه 16 خرداد 1393, 19:07 عصر
این مثال رو ببین. اگر افاقه نکرد نمونه کد خودتون رو بگذارید.

pswin.pooya
جمعه 16 خرداد 1393, 23:01 عصر
سلام
توی این روش از مدل استفاده کرده و بعد برای مدل اومده delegate ساخته. توی روش قبلی که استفاده می کردم یه مدل ساخته بودم. اما نتیجه خوبی نگرفتم و بیخیالش شدم. (البته یه مشکل هم این بود که زمان ادیت نه برای delgate های پیش فرض خود qt و نه خودم مقدار ادیتور درست ست نمی شد. که توی مثال شما درسته.


اما فکر کنیم دلیل کرش برنامه این بود زمانی که کنترل رو با setCellWidget ست میکنین و بعد سطر رو حذف میکنن، کنترل ست شده هم اتوماتیک پاک میشه. برای همین دفعه دوم که می اومدم ست کنم خطا میداد و کرش میکرد. برای همین هربار قبل از ست کردن کنترل یه بار ایجادش کردم و مشکل ظاهرا حل شده؟!

کلا نمی دونم چرا فریم ورکهای مختلف این همه با گرید مشکل دارن. مثلا توی دات نت برای خیلی از کارها باید دوباره گرید رو با ارث بری بسازی یا داخل Qt یه سری از موارد کلا اذیت داره :لبخند: