MFC中list control的表头该如何设置,那些语句应该加在哪个函数里?

我创建了一个子对话框,在子对话框中做了一个listcontrol,并且设置了变量m_list,但是不知道怎么设置表头,请问设置表头的语句应该加在哪里?我试过在BOOLCS... 我创建了一个子对话框,在子对话框中做了一个list control,并且设置了变量m_list,但是不知道怎么设置表头,请问设置表头的语句应该加在哪里?我试过在BOOL CSDlg::OnInitDialog()中写,但是不行啊。。 展开
 我来答
鱼眼看娱乐
2015-11-10 · 知道合伙人教育行家
鱼眼看娱乐
知道合伙人教育行家
采纳数:2317 获赞数:126728
毕业于西安交通大学化工专业,有新闻双学位。教育培训工作十余年,读大量的教育类书籍,对教育工作有经验

向TA提问 私信TA
展开全部
table_widget->setColumnCount(4); //设置列数
table_widget->horizontalHeader()->setDefaultSectionSize(150);
table_widget->horizontalHeader()->setClickable(false); //设置表头不可点击(默认点击后进行排序)

//设置表头内容
QStringList header;
header<<tr("name")<<tr("last modify time")<<tr("type")<<tr("size");
table_widget->setHorizontalHeaderLabels(header);

//设置表头字体加粗
QFont font = this->horizontalHeader()->font();
font.setBold(true);
table_widget->horizontalHeader()->setFont(font);

table_widget->horizontalHeader()->setStretchLastSection(true); //设置充满表宽度
table_widget->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);
table_widget->verticalHeader()->setDefaultSectionSize(10); //设置行高
table_widget->setFrameShape(QFrame::NoFrame); //设置无边框
table_widget->setShowGrid(false); //设置不显示格子线
table_widget->verticalHeader()->setVisible(false); //设置垂直头不可见
table_widget->setSelectionMode(QAbstractItemView::ExtendedSelection); //可多选(Ctrl、Shift、 Ctrl+A都可以)
table_widget->setSelectionBehavior(QAbstractItemView::SelectRows); //设置选择行为时每次选择一行
table_widget->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置不可编辑
table_widget->horizontalHeader()->resizeSection(0,150); //设置表头第一列的宽度为150
table_widget->horizontalHeader()->setFixedHeight(25); //设置表头的高度
table_widget->setStyleSheet("selection-background-color:lightblue;"); //设置选中背景色
table_widget->horizontalHeader()->setStyleSheet("QHeaderView::section{background:skyblue;}"); //设置表头背景色

//设置水平、垂直滚动条样式
table_widget->horizontalScrollBar()->setStyleSheet("QScrollBar{background:transparent; height:10px;}"
"QScrollBar::handle{background:lightgray; border:2px solid transparent; border-radius:5px;}"
"QScrollBar::handle:hover{background:gray;}"
"QScrollBar::sub-line{background:transparent;}"
"QScrollBar::add-line{background:transparent;}");
table_widget->verticalScrollBar()->setStyleSheet("QScrollBar{background:transparent; width: 10px;}"
"QScrollBar::handle{background:lightgray; border:2px solid transparent; border-radius:5px;}"
"QScrollBar::handle:hover{background:gray;}"
"QScrollBar::sub-line{background:transparent;}"
"QScrollBar::add-line{background:transparent;}");
百度网友f7965f48b
2010-09-04 · TA获得超过191个赞
知道小有建树答主
回答量:104
采纳率:0%
帮助的人:0
展开全部
void RefreshListViewHeader(CListCtrl *pListCtrl,CStringArray m_arrHeaderLabel,
long* col_wide_arr)
{
if(pListCtrl==NULL)
return;
int i, NUM_COLUMNS, nColumnCount;
CHeaderCtrl *pHeader = pListCtrl->GetHeaderCtrl();
nColumnCount = pHeader->GetItemCount();
//删除所有列
for (i=0;i < nColumnCount;i++)
pListCtrl->DeleteColumn(0);
//m_arrHeaderLabel数组长度为列数
if(m_arrHeaderLabel.GetSize()>0)
NUM_COLUMNS = m_arrHeaderLabel.GetSize();
else
NUM_COLUMNS = 0;
//插入列
LV_COLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
for(i = 0; i<NUM_COLUMNS; i++)
{
//设置列索引号
lvc.iSubItem = i;
//设置内容
lvc.pszText = m_arrHeaderLabel[i].GetBuffer(1);
//设置列宽
if(col_wide_arr!=NULL)
lvc.cx = col_wide_arr[i];
else
lvc.cx = 80;
//设置对齐方式
lvc.fmt = LVCFMT_LEFT;
//插入列
pListCtrl->InsertColumn(i,&lvc);
}
}

BOOL CSDlg::OnInitDialog()
{
CStringArray m_arrHeaderLabel;
m_arrHeaderLabel.Add("第一列");
m_arrHeaderLabel.Add("第二列");
m_arrHeaderLabel.Add("第三列");
//必须保证该数组长度大于等于m_arrHeaderLabel长度
long col_wide_arr[4]={90,70,70,90};
//设置listctrl风格
m_list.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP);
RefreshListViewHeader(&m_list,m_arrHeaderLabel,col_wide_arr);
CDialog::OnInitDialog();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式