构造里:
m_parentFrame = new QFrame();
ui->gridLayout->addWidget(m_parentFrame);
for(int i = 0; i < 4; i++)
{
m_frame[i] = new QFrame();
m_frame[i]->setParent(m_parentFrame);
showMyFrame();
}
函数showMyFrame()
{
int w = m_parentFrmae->width();
int h = m_parentFrmae->height();
int fw = w/2;
int fh = h/2;
for(int i = 0; i < 4; i++)
{
m_frame[i]->setGeometry(i%2 *fw, i/2 *fh, fw, fh);
m_frame[i]->show();
}
}
我打算让4个Frame按照窗口大小跟随缩放
可是怎么连窗口都显示不出来呢?
11 个解决方案
#1
你的布局用错了,gridLayout只能对m_parentFrame进行调整,管不了他的子控件。应该在m_parentFrame的里面放gridLayout,然后把四个子控件addWidget进去。
#2
我是对m_parentFrame进行调整,通过ui->gridLayout->addWidget(m_parentFrame);加进来的
然后我在m_parentFrame里显示4个窗口
这样不对吗?刚用qt,多指教!
#3
和你的需求不相符,你现在的写法不能对4个子窗口进行布局。
告诉你个简单的办法,你用Qt设计器做一下试验,把你刚才的设计思路用设计器画一下,看看能不能实现你要的效果
告诉你个简单的办法,你用Qt设计器做一下试验,把你刚才的设计思路用设计器画一下,看看能不能实现你要的效果
#4
不行,跟随不了缩放
怎么才能实现呢?
#5
我第一个帖子里已经说了,“应该在m_parentFrame的里面放gridLayout,然后把四个子控件addWidget进去。”
意思是,在那个parentFrame里面再放一个gridLayout,把那四个小Frame放到这个布局里
#6
"意思是,在那个parentFrame里面再放一个gridLayout,把那四个小Frame放到这个布局里"
我按照做了,能显示出来,可是不随主窗口缩放啊
我按照做了,能显示出来,可是不随主窗口缩放啊
#7
把你的ui文件贴出来看看
#8
你确定你的窗口上有两个gridLayout吗?一个在parentFrame外面,一个在parentFrame里面,外面那个可以确保窗口在缩放时parentFrame也能缩放。里面那个可以确保parentFrame缩放时四个小Frame也能缩放。
#9
我的MainWindow里有一个gridLayout
在myFrame有一个gridLayout
在MainWindow里用ui->gridLayout->addWidget(m_parentFrame);加入m_parentFrame
在myFrame里
for(int i = 0; i < 4; i++)
{
m_myframe[i] = new QFrame();
m_myframe[i].show();
ui->gridLayout->addwidget(m_myframe[i]);
}
运行能显示,但是不跟随缩放
在myFrame有一个gridLayout
在MainWindow里用ui->gridLayout->addWidget(m_parentFrame);加入m_parentFrame
在myFrame里
for(int i = 0; i < 4; i++)
{
m_myframe[i] = new QFrame();
m_myframe[i].show();
ui->gridLayout->addwidget(m_myframe[i]);
}
运行能显示,但是不跟随缩放
#10
myFrame是什么?myFrame里有一个gridLayout是什么意思?
另外,楼主,QFrame默认的颜色和窗体是一样的,所以你看不出它是否显示。
我把你的代码整理了一下,跟随缩放是没有问题的。
但我目前还不知道你想要什么样的效果。你的描述太简单了,而且不准确。
我不知道你是想把4个frame放到m_parentFrame里面,还是想做别的什么。
如果你想把4个frame放到m_parentFrame里,那我之前的帖子已经说的很清楚了,你需要在m_parentFrame里再放置一个gridLayout。
另外,楼主,QFrame默认的颜色和窗体是一样的,所以你看不出它是否显示。
我把你的代码整理了一下,跟随缩放是没有问题的。
m_parentFrame = new QFrame(this);
ui->gridLayout->addWidget(m_parentFrame);
for(int i = 0; i < 4; i++)
{
m_frame[i] = new QFrame(this);
m_frame[i]->setStyleSheet("background-color: rgb(255, 0, 0);");
ui->gridLayout->addWidget(m_frame[i]);
}
但我目前还不知道你想要什么样的效果。你的描述太简单了,而且不准确。
我不知道你是想把4个frame放到m_parentFrame里面,还是想做别的什么。
如果你想把4个frame放到m_parentFrame里,那我之前的帖子已经说的很清楚了,你需要在m_parentFrame里再放置一个gridLayout。
#11
多谢马林脸!!!
恩,是我的错,好像没有设置窗口属性
恩,是我的错,好像没有设置窗口属性
#1
你的布局用错了,gridLayout只能对m_parentFrame进行调整,管不了他的子控件。应该在m_parentFrame的里面放gridLayout,然后把四个子控件addWidget进去。
#2
我是对m_parentFrame进行调整,通过ui->gridLayout->addWidget(m_parentFrame);加进来的
然后我在m_parentFrame里显示4个窗口
这样不对吗?刚用qt,多指教!
#3
和你的需求不相符,你现在的写法不能对4个子窗口进行布局。
告诉你个简单的办法,你用Qt设计器做一下试验,把你刚才的设计思路用设计器画一下,看看能不能实现你要的效果
告诉你个简单的办法,你用Qt设计器做一下试验,把你刚才的设计思路用设计器画一下,看看能不能实现你要的效果
#4
不行,跟随不了缩放
怎么才能实现呢?
#5
我第一个帖子里已经说了,“应该在m_parentFrame的里面放gridLayout,然后把四个子控件addWidget进去。”
意思是,在那个parentFrame里面再放一个gridLayout,把那四个小Frame放到这个布局里
#6
"意思是,在那个parentFrame里面再放一个gridLayout,把那四个小Frame放到这个布局里"
我按照做了,能显示出来,可是不随主窗口缩放啊
我按照做了,能显示出来,可是不随主窗口缩放啊
#7
把你的ui文件贴出来看看
#8
你确定你的窗口上有两个gridLayout吗?一个在parentFrame外面,一个在parentFrame里面,外面那个可以确保窗口在缩放时parentFrame也能缩放。里面那个可以确保parentFrame缩放时四个小Frame也能缩放。
#9
我的MainWindow里有一个gridLayout
在myFrame有一个gridLayout
在MainWindow里用ui->gridLayout->addWidget(m_parentFrame);加入m_parentFrame
在myFrame里
for(int i = 0; i < 4; i++)
{
m_myframe[i] = new QFrame();
m_myframe[i].show();
ui->gridLayout->addwidget(m_myframe[i]);
}
运行能显示,但是不跟随缩放
在myFrame有一个gridLayout
在MainWindow里用ui->gridLayout->addWidget(m_parentFrame);加入m_parentFrame
在myFrame里
for(int i = 0; i < 4; i++)
{
m_myframe[i] = new QFrame();
m_myframe[i].show();
ui->gridLayout->addwidget(m_myframe[i]);
}
运行能显示,但是不跟随缩放
#10
myFrame是什么?myFrame里有一个gridLayout是什么意思?
另外,楼主,QFrame默认的颜色和窗体是一样的,所以你看不出它是否显示。
我把你的代码整理了一下,跟随缩放是没有问题的。
但我目前还不知道你想要什么样的效果。你的描述太简单了,而且不准确。
我不知道你是想把4个frame放到m_parentFrame里面,还是想做别的什么。
如果你想把4个frame放到m_parentFrame里,那我之前的帖子已经说的很清楚了,你需要在m_parentFrame里再放置一个gridLayout。
另外,楼主,QFrame默认的颜色和窗体是一样的,所以你看不出它是否显示。
我把你的代码整理了一下,跟随缩放是没有问题的。
m_parentFrame = new QFrame(this);
ui->gridLayout->addWidget(m_parentFrame);
for(int i = 0; i < 4; i++)
{
m_frame[i] = new QFrame(this);
m_frame[i]->setStyleSheet("background-color: rgb(255, 0, 0);");
ui->gridLayout->addWidget(m_frame[i]);
}
但我目前还不知道你想要什么样的效果。你的描述太简单了,而且不准确。
我不知道你是想把4个frame放到m_parentFrame里面,还是想做别的什么。
如果你想把4个frame放到m_parentFrame里,那我之前的帖子已经说的很清楚了,你需要在m_parentFrame里再放置一个gridLayout。
#11
多谢马林脸!!!
恩,是我的错,好像没有设置窗口属性
恩,是我的错,好像没有设置窗口属性