View Full Version : سوال: زیبا سازی tableview
ravaei
شنبه 16 اسفند 1393, 23:21 عصر
درود ...
می خواستم ببینم بهترین راه واسه اینکه قیافه tableview رو تغییر بدم چیه؟ ...
آیا اصلا کامپوننتی هست که یه مقدار شکیل تر از این باشه ؟؟
chikar
یک شنبه 17 اسفند 1393, 15:21 عصر
ui->tableView->setFocusPolicy(Qt::NoFocus);//حذف نقطه چین دور آیتم ها
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers) ;//غیر قابل ویرایش کردن
ui->tableView->setSelectionMode(QAbstractItemView::SingleSelectio n);//انتخاب یک سطر کامل
ui->tableView->setAlternatingRowColors(true);//استفاده از دو رنگ در سطرها
ui->tableView->setHorizontalHeader(new QHeaderView(Qt::Horizontal));//سازماندهی بهتر هدر بالا
ui->tableView->setVerticalHeader(new QHeaderView(Qt::Vertical));//سازماندهی بهتر هدر کنار
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//هم اندازه شدن ستون ها با کل جدول
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows );//انتخاب
ui->tableView->setColumnWidth(0,100);//اندازه ستون دلخواه
ui->tableView->setColumnHidden(1,true);//مخفی کردن ستون دلخواه
ui->tableView->verticalHeader()->setVisible(false);//مخفی کردن هدر کنار
ui->tableView->horizontalHeader()->setVisible(false);//مخفی کردن هدر بالا
ui->tableView->horizontalHeader()->setSectionHidden(0,true);//مخفی کردن ستون دلخواه
ui->tableView->verticalHeader()->setDefaultAlignment(Qt::AlignCenter);//وسط چین کردن هدر کنار
ui->tableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOf f);//از کار انداختن اسکرول
ui->tableView->verticalHeader()->setDefaultSectionSize(50);//فاصله بین سطرها
ui->tableView->setShowGrid(false);//مخفی کردن خطوط حاشیه ها
ui->tableView->setStyleSheet("QHeaderView::section {height:40px;border: 1px solid white;border
radius:8px;background-color:rgba(240,190,190,150); }");//تغیر استایل شیت هدر
ui->tableView->setStyleSheet("QTableView{ alternate-background-color:rgba(220,220,220,100);"
"background-color: white;font-family:tahoma;font-size:8.5pt}"
"QTableView::item{border-left: 1px solid white;border-radius:8px;}"
"QTableView::item:selected{background-color:rgba(240,190,190,150);}");
// تغییر استایل شیت کل جدول
QPalette *palette = new QPalette();
palette->setColor(QPalette::AlternateBase,QColor(220,220,22 0,100));
palette->setColor(QPalette::Highlight,QColor(240,190,190,15 0));
palette->setColor(QPalette::HighlightedText,Qt::red);
ui->tableView->setPalette(*palette);
// تغییر رنگ پس زمینه و فونت
chikar
یک شنبه 17 اسفند 1393, 15:44 عصر
برای وسط چین کردن داده های سطرهای جدول هم یک کلاس از نوع QSqlTableModel بسازید و تابع مجازی data را به شکل زیر دوباره تعریف کنید و از این کلاس جدید به عنوان tableModel استفاده کنید
QVariant MyYb_Model::data(const QModelIndex &index, int role) const
{
if (role == Qt::TextAlignmentRole || role == Qt::UserRole)
return Qt::AlignCenter | Qt::AlignVCenter;
else
return QSqlTableModel::data(index, role);
}
ravaei
یک شنبه 17 اسفند 1393, 16:44 عصر
برای وسط چین کردن داده های سطرهای جدول هم یک کلاس از نوع QSqlTableModel بسازید و تابع مجازی data را به شکل زیر دوباره تعریف کنید و از این کلاس جدید به عنوان tableModel استفاده کنید
QVariant MyYb_Model::data(const QModelIndex &index, int role) const
{
if (role == Qt::TextAlignmentRole || role == Qt::UserRole)
return Qt::AlignCenter | Qt::AlignVCenter;
else
return QSqlTableModel::data(index, role);
}
ممنون ، چطور میتونم کاری کنم که با کلیک رو هر سلول از tableview کل سطر رو select کنه و همچنین قابلیت edit کردن سلول ها هم غیر فعال بشه یه table view شبیه گرید تو vs ...
chikar
دوشنبه 18 اسفند 1393, 20:27 عصر
ممنون ، چطور میتونم کاری کنم که با کلیک رو هر سلول از tableview کل سطر رو select کنه و همچنین قابلیت edit کردن سلول ها هم غیر فعال بشه یه table view شبیه گرید تو vs ...
مثل که شما اصلا توضیحات جلوی کدهای بالا رو که گذاشتم رو نخوندید! دو موردی که گفتید در کدهای بالا هست ، کمی نگاه کنید!!!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.