• 10297阅读
  • 28回复

[提问]求教各位一个tableWidget的问题 [复制链接]

上一主题 下一主题
离线hfqs
 
只看楼主 倒序阅读 楼主  发表于: 2012-12-04
小弟想尝试在一个widget界面中实现一个tableWidget,所以在初始化tableWidget时将父类设为widget,可是显示效果时tableWidget的四周有一个细细的边框怎么也去不掉,求教各位有什么办法可以解决?顺带还有一个问题就是怎么把tableWidget的背景去掉,即变为透明?


注:这个细边框不是栅格线,是整个tableWidget外围的边沿。

离线shiziyang

只看该作者 1楼 发表于: 2012-12-04
试一下这个
tablewidget->setStylesheet("QTableWidget{border: none;}");
离线hfqs
只看该作者 2楼 发表于: 2012-12-04
回 1楼(shiziyang) 的帖子
太感谢了,问题确实解决了,现在还有这样的问题麻烦您下,在单元格内部被填充成了纯白,这个怎么把它透明掉?在一个就是tableWidget中没有被单元格覆盖到的区域(因为我的单元格建的很少)继承了父类的背景图片,我想把它也一并透明掉,这个怎么处理?谢谢!!
离线shiziyang

只看该作者 3楼 发表于: 2012-12-04
如果是指table放在widget上,想把table透明显示widget的背景,也可以使用qss。在之前的qss语句中加上新的属性
QTableWidget
{
border: none;
background: transparent;
}
看看是不是你要的效果,不对的话最好把你要的效果画出来,需求我看不太懂
离线hfqs
只看该作者 4楼 发表于: 2012-12-04
回 3楼(shiziyang) 的帖子
谢谢啦,我也是刚刚搞出来,和你教我的一样,你理解的没错,呵呵,是我自己的问题,我在mainwindow里设的时候没有加QMainWindow,导致它影响子部件,所以一直设子部件都没用。。。

还有一个问题,就是单元格内部能不能也透明呢,这个要怎么设置呢??

谢谢啦
离线shiziyang

只看该作者 5楼 发表于: 2012-12-04
???设置了background: transparent;后应该直接就透明了啊?难道你设了cellWidget?那样的话要对每个设下去的widget都设一次background: transparent;或者你也可以试试对你的table设置
QWidget
{
background: transparent;
}
不过大概表格的所有子控件都会透明了(不过这个没试过,不一定有用)
离线hfqs
只看该作者 6楼 发表于: 2012-12-04
回 5楼(shiziyang) 的帖子
设置
QTableWidget
{
background: transparent;
}
和设置
QWidget
{
background: transparent;
}
的效果一样,透明的都只是除单元格以外的空白部分。
如果是加上单独对cell的设置
tableWidget->cellWidget(0, 0)->setStyleSheet("QWidget{background-color:transparent;}");
直接运行程序时候就程序异常退出了。。。似乎有点纠结啊
离线shiziyang

只看该作者 7楼 发表于: 2012-12-04
你单元格的内容如果是用setCellWidget(QWidget * pWidget)接口设下去的,那么设下去后要对pWidget设置qss,如果是用setItem(int row, int column, QTableWidgetItem * item),你可以对那个item设置它的background试试看,接口是QTableWidgetItem的void QTableWidgetItem::setBackground ( const QBrush & brush ),你把brush设成透明的试试看。
离线hfqs
只看该作者 8楼 发表于: 2012-12-04
回 7楼(shiziyang) 的帖子
我也是刚反应过来,w我的单元格里现在还是空的,什么都没写都没放,直接创建完就这样了。。。
离线hfqs
只看该作者 9楼 发表于: 2012-12-04
回 7楼(shiziyang) 的帖子
这个似乎单元格之后还有一层背景似得,我把tableWidget背景透明之后他一直都是白色。。。很有问题。。。有没有什么别的办法呢?
离线shiziyang

只看该作者 10楼 发表于: 2012-12-04
这我也没办法了,我这里没代码什么也看不出来,要不你把相关代码提出来上传下
离线hfqs
只看该作者 11楼 发表于: 2012-12-05
回 10楼(shiziyang) 的帖子
是这样的,我用的UI设计器在窗口里绘制了一个tabelWidget,里面有六个单元格,但六个单元格没有占满整个控件区域,就像这样:

我在用了background的透明代码以后变成了这样:

但是六个单元格还是依旧是白色,有没有什么办法把单元格内部也透明的?谢谢啦。。。
离线shiziyang

只看该作者 12楼 发表于: 2012-12-05
要不你试试这个
QTableWidget
{
background-color: transparent;
}
QTableWidget::item
{
background-color: transparent;
}

我用的是mac,默认就直接可以透item了,你是linux吗?估计有些效果是不一样的,再不行我就没辙了
离线jdwx

只看该作者 13楼 发表于: 2012-12-05
回 11楼(hfqs) 的帖子
就算单元格透明了,窗口也是不透明的,只能是窗口透明。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线hfqs
只看该作者 14楼 发表于: 2012-12-06
回 13楼(jdwx) 的帖子
我其他都透明了,只差单元格了。。。
离线hfqs
只看该作者 15楼 发表于: 2012-12-06
回 12楼(shiziyang) 的帖子
还是没用,折腾了一天都没折腾出来,我决定改道了,现在在学习listwidget,请问您个问题,有没有可能获取到listwidget中的item的坐标?谢谢了。
离线shiziyang

只看该作者 16楼 发表于: 2012-12-06
回 15楼(hfqs) 的帖子
我没试过,应该不行吧,位置会变,有些还是看不到的自己算会很麻烦的样子,要考虑listwidget的位置,边框的大小,scrollbar的位子什么的
离线dxfans

只看该作者 17楼 发表于: 2012-12-07
视图也设置透明
离线hfqs
只看该作者 18楼 发表于: 2012-12-10
回 17楼(dxfans) 的帖子
视图透明在哪里设置呢?
离线hfqs
只看该作者 19楼 发表于: 2012-12-10
回 16楼(shiziyang) 的帖子
再麻烦一个问题,我现在换用listWidget,我只想排列图片,不想使用text,但是在item选中的时候,text的位置上还是有一条类似波浪线的标记,这个怎么能去掉呢? 谢谢啦。。。





离线shiziyang

只看该作者 20楼 发表于: 2012-12-10
试试这个qss
QListView::item
{
background-color: transparent;
}
离线hfqs
只看该作者 21楼 发表于: 2012-12-15
回 20楼(shiziyang) 的帖子
再请教您一个问题,您知道哪里可以查到QT的原函数吗,我想重写一下focusNextChild()这个函数。
其实是想实现一次将focus移动多个,虽然循环一下也可以移动多个,但是那样focus在中间每个对象都会focus一下,不是我要的效果,如果您有什么办法您指教一下,谢谢您。。。
离线shiziyang

只看该作者 22楼 发表于: 2012-12-15
如果你清楚自己想要focus的顺序,直接将要focus的对象控件调用setFocus()函数就可以了,不然你想要重写focusNextChild的话你要去找Qt的源码,最新的安装包里完整安装就自带了源码。当然你也可以在本站或官网下载源码包
离线hfqs
只看该作者 23楼 发表于: 2012-12-17
回 22楼(shiziyang) 的帖子
懂了懂了,谢谢啦。。。  
离线hfqs
只看该作者 24楼 发表于: 2012-12-17
回 22楼(shiziyang) 的帖子
呵呵,话说还有个问题,本站下载源码是在哪里啊。。。
离线jdwx

只看该作者 25楼 发表于: 2012-12-17
回 24楼(hfqs) 的帖子
Qt官网下载的安装包内全都带源码,找src目录。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线hfqs
只看该作者 26楼 发表于: 2012-12-17
回 25楼(jdwx) 的帖子
问个愚昧的问题,源码都是什么文件?是cpp吗?要不是的话用什么工具查看
离线jdwx

只看该作者 27楼 发表于: 2012-12-17
回 26楼(hfqs) 的帖子
源码就是你现在用的Qt的源代码。
就是一堆.h和.cpp,在src的目录里。和你写的程序一样的代码,只不过代码比较多。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线hfqs
只看该作者 28楼 发表于: 2012-12-19
回 25楼(jdwx) 的帖子
再求教一个问题,今天看C++ GUI QT那本书,看到可以设计启动界面,所以想学着做一下,做个动态的,后来查询网上说那样的话需要另起一个线程,可也有说法说子线程不能直接控制GUI,所以我试着起了一个线程,然后子线程运算,发送信号,由主线程接收信号来修改GUI,但是问题是在我的mainwindow的类show出来之前,我的启动界面上什么都没有,只有mainwindow的类show出来后,启动界面才开始动作,这个是我哪里算法用错了吗?
(我用了三个类,一个是子线程myThread:QThread,一个是启动界面mySplash:QWidget,一个是MainWindow:MainWindow,main函数中第一步先创建启动界面并show,然后创建子线程,然后子线程控制运动,然后创建mainwindow,然后show出mainwindow,然后停止子线程,delete子线程和启动界面)
快速回复
限100 字节
 
上一个 下一个