QT子类化widget,怎么没法在主窗口显示Mainwindow

pishuli 2014-08-12 05:43:57
初学者的疑惑,请大虾解答
1.就建立了一个默认工程一个MainWindows主窗口,然后想自定义一个控件子类化了一个widget为什么显示不出来,需要指定什么属性。
2.之前写了个程序子类化了widge但是画线那些画不到边缘什么情况。
...全文
1607 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
未狂 2014-08-13
  • 打赏
  • 举报
回复
最好有代码,这样才知道你像表达什么
soulfy 2014-08-13
  • 打赏
  • 举报
回复
1.直接子类化QWiget,因为背景透明,如果没有设定背景或者在QWidget添加其他如QPushButton之类的控件,是啥也看不到的,你可以设置个widget的边框; 2.如果直接集成QWidget且没有添加任何控件,添加到QMainWindow中,同时还有其他QSizePolicy为Expending属性的控件,并且QMainWindow还做了QGridLayout等布局,那么也会把这个QWidget子类控件挤的看不见
WeiXiao_365 2014-08-13
  • 打赏
  • 举报
回复
没看到你的代码,猜不出来是什么情况。
pishuli 2014-08-13
  • 打赏
  • 举报
回复
果然,多谢各位,问题就是背景色。 分数有限请见谅,下次可能还有问题需要请教各位
ybjx111 2014-08-13
  • 打赏
  • 举报
回复
Curve_Frame 设置setAutoFillBackground(true);
pishuli 2014-08-13
  • 打赏
  • 举报
回复
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    Curve_Frame *curveWidge = new Curve_Frame(this);
    //QPushButton *curveWidge = new QPushButton(this);
    QHBoxLayout *layout = new QHBoxLayout;
    //QWidget *centerWindow = new QWidget;
    //curveWidge->setCentralWidget(centerWindow);

    //curveWidge->setText("test!");
    //curveWidge->setGeometry(QRect(0,0,100,100));
    layout->addWidget(curveWidge);
    curveWidge->show();
    ui->setupUi(this);
    this->setLayout(layout);
    this->setMinimumSize(800,600);
    this->setMaximumSize(800,600);
    //centerWindow->setLayout(layout);
}

Curve_Frame::Curve_Frame(QWidget *parent) :
    QWidget(parent)
{
    QPalette widgetPal = palette();
    setFocusPolicy(Qt::FocusPolicy(style()->styleHint(QStyle::SH_Button_FocusPolicy)));
    setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed));
    setAttribute(Qt::WA_WState_OwnSizePolicy, false);
    //setForegroundRole(QPalette::ButtonText);
    //setBackgroundRole(QPalette::Button);

    bkColor = QColor(0,0,0);
    widgetPal.setColor (QPalette::Background, bkColor);
    setGeometry(QRect(0,0,100,100));
    //setStyleSheet("background:red");
    //widgetPal.setColor (QPalette::Foreground, bkColor);
    setPalette (widgetPal);
大概就这么多了吧,其他没改,请大虾耐心看,多谢
ybjx111 2014-08-12
  • 打赏
  • 举报
回复
QWidget如果没有自绘时背景色是透明的,所以看不到。 你可以在QWidget的paintevent函数中绘制背景色,这样就能看到了。 话边框的时候如果是画下边框或右边框要小于width()和height(),不能等于
pishuli 2014-08-12
  • 打赏
  • 举报
回复
其他空间像QPushButton这些是可以显示的

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧