(我使用Qt 4.7,Windows 7,64bit).
我创建了一个自定义表.每行都是带有小部件的水平布局.行保存在QList中以便于访问,孩子也是如此.这些行也会添加到父窗口小部件中.
如果我调整父窗口小部件的大小,我会计算新的大小,删除所有内容,然后重新创建它.
我的问题是我不想删除任何小部件.只有当我清理桌子时,我才会这样做.
由于我在QList内部和父布局内部有小部件,如何删除每行中的所有小部件,删除所有布局,然后将它们添加到新布局?
如果我这样做:takeAt(0)为每个布局中的每个元素我有一个QLayoutItem,里面有一个小部件...如何在不删除小部件的情况下删除layoutItem?....如何删除小部件而不删除它,无论是父母还是孩子?因为有很多方法可以删除:removeItem,removeWidget ...在布局中,但不是takeWidget ...只是takeAt(),它给出了一个Qlayoutitem.
我尝试了几种方法,但无论发生什么事,我仍然会看到小部件.
关于这个的问题:
小部件何时被删除?如果我从布局中取出窗口小部件(索引),它是否会被删除一段时间?如果我在另一个列表中有一个指针,它会发生吗?
removeAt(index)是否执行widget的delete方法?
我经常听到"连接图书馆"一词.我是编译器的新手,因此我很想了解这一点.
链接库是什么意思,什么时候不这样做会导致问题?
我正在尝试调试我的简单光线跟踪器,模拟来自穿过镜头的一个点的光线.我只需要折射效果.
我试图手工完成,但最后我refract从GLSL中找到了,这在GLSL 1.1中有记录,如下所示:
//For a given incident vector I, surface normal N and ratio of
//indices of refraction, eta, refract returns the refraction vector, R.
//R is calculated as:
k = 1.0 - eta * eta * (1.0 - dot(N, I) * dot(N, I));
if (k < 0.0)
R = genType(0.0); // or genDType(0.0)
else
R = eta * I - (eta * dot(N, I) + sqrt(k)) * N;
//The input parameters I and N should be normalized …Run Code Online (Sandbox Code Playgroud) 我的小部件的结构是:
QWidget被定制为具有圆形边框的面板.
要在边框内包含带有滚动条的区域,请将其放入内部:
带有QVBoxLayout的QScrollArea(垂直添加内容)
然后我在里面添加了一系列:
标题为间距为0的QGroupBox和一个QFormLayout
formlayout不像我想的那样工作.里面的小部件是标签+旋转盒,所有这些都是.
这是一张图片:

第一.他们没有居中.我不知道为什么.
第二.正如我告诉他们的那样,它们都被赋予相同的固定尺寸,但无论如何它们都被堆积,而不是被压扁,所以它们互相隐藏.为什么它不会保持这个大小,父QScrollArea显示外面的滚动条?这就是我想要的.
我不希望内容被压扁或拉伸.我希望他们能够登顶.如果屏幕非常大,面板将很长,但内容将位于顶部,总是具有相同的大小.
有人要求代码,所以我在这里复制,但代码真的很大......我认为这更令人困惑.但好吧,生病了删除没有任何意义的行.以下是您在该框中看到的部分:
// THE PANEL OUTSIDE (A QWIDGET) is mainParametersLayout_. This particular scroll bar inside
// is cameraModeParametersPanel_
cameraModeParametersPanel_ = new QScrollArea();
cameraModeParametersPanel_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
cameraModeParametersPanel_->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
mainParametersLayout_->addWidget( cameraModeParametersPanel_ );
// HERE THERE ARE TWO MORE QGROUP BOXES. THE ONE THAT DOESN´T STAY THE WAY I SHOWED IS THIS.
QVBoxLayout* mainCameraLayout = new QVBoxLayout(cameraModeParametersPanel_);
mainCameraLayout->setSpacing(5);
// GROUP BOX
QGroupBox* activeCameraParametersGroup = new QGroupBox();
activeCameraParametersGroup->setObjectName( parametersContainerName );
activeCameraParametersGroup->setTitle(strings->cameraModeCameraParamsTitle);
mainCameraLayout->addWidget( activeCameraParametersGroup );
// LAYOUT
QFormLayout* …Run Code Online (Sandbox Code Playgroud) 问题就是这一切.
我有一个5 x 3网格.
看起来像这样
row 0: buttonA--buttonA--buttonA nothing buttonB--buttonB--buttonB
row 1: empty row
row 2: buttonC nothing buttonD nothing buttonE nothing buttonF
Run Code Online (Sandbox Code Playgroud)
在整个列或行中没有任何内容的空间中,minimumRowHeight和所有这些设置都可以工作.对?
好.按钮A和按钮B(以及其余部分)永远不会集中在他们共享的3个单元格上.决不.我写的布局参数无关紧要.
我删除了代码,因为它最终使用垂直布局,内部,两个水平布局.那些以这种方式集中.但我想更好地定位他们.
什么不起作用是在添加小部件时使用:
addWidget(widget,0,0,2,0,Qt :: AlignHCenter); AlignCenter甚至没有工作.
如何使其居中或对齐?
谢谢!
我希望我QStackedWidget调整大小到打开的页面.
我在第一页上附加了很多小部件,但其余的页面只有一个按钮.所以他们保持这么大,第一页就可以了.
如何让我QStackedWidget的页面大小正在被查看.
我想要这样做的原因是我有三种不同的选择,之后我还有其他的东西.如果我改变到有一个按钮然后有很多空白区域的模式,我不明白它为什么不调整大小.
我不是 Linux 的常客,我认为我做错了什么。
这是我正在生成的测试动态库“.so”的代码。
class InternalClass
{
public:
int Function(){ return 10; }
};
extern "C"
{
int WrapperFunctionSimple() { return 10; }
void WrapperCreateInstance() {InternalClass* item = new InternalClass(); delete item; }
}
Run Code Online (Sandbox Code Playgroud)
编译失败并出现以下错误:
g++ -Wall -fexceptions -O2 -c /home/lidia/compartida/TestLibrary/TestLibrary/main.cpp -o obj/Release/main.o
g++ -shared obj/Release/main.o -o bin/Release/libTestLibrary.so -s
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: obj/Release/main.o: warning: relocation against `_Znwm@@GLIBCXX_3.4' in read-only section `.text'
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: obj/Release/main.o: relocation R_X86_64_PC32 against symbol `_Znwm@@GLIBCXX_3.4' can not be used when making a shared object; recompile with -fPIC
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: final …Run Code Online (Sandbox Code Playgroud) 我在Windows 7 64位版本Visual Studio 2008上与同事一起工作.
他们加载JPG,他们工作.通过QPixmap和Stylesheets.并且工作.但对我来说,我只能与PNG合作,其余的根本不起作用.
我也尝试改变环境变量的路径,但我只看到一个Qt路径(bin).什么关于插件,我猜...正如我在文档上看到的:
"默认情况下,Qt可以读取以下格式:格式说明BMP Windows位图GIF图形交换格式(可选)JPG联合图像专家组JPEG联合图像专家组MNG多图像网络图形PNG便携式网络图形PBM便携式位图PGM便携式灰度图( ...)"
我想知道"可选"是什么意思?
样式表存在很大问题.
如果通过样式表设置大小,方法是将max和min值设置为相同(固定大小)或其他,然后尝试使用widget上的size()获取它们,如果小部件从未显示过您获得的大小很奇怪
但是您也无法从样式表中获取它们,因此您必须在调整大小或获取位置之前显示所有小部件.
就我而言,我从一个窗口开始.但是此窗口下的小部件将在稍后出现,并且必须在出现之前定位在正确的位置.我有漂浮的小部件,它们没有作为QMainWindow的孩子集成,所以我用手移动它们并定位它们......但是如果我不知道它们是怎么做的我该怎么办呢?
你知道其他任何方法来获取样式表中存储的大小吗?
我为这样的Qlabel找到了一条线:
QString(tr("Are you sure you want to delete the scene called %1 ?")).arg(variable);
Run Code Online (Sandbox Code Playgroud)
有些人告诉我你无法翻译.他们告诉我用参数和文字附加不同的字符串......
但是使用各种参数的短语呢?如果翻译器以该顺序附加,翻译者如何知道该命令?
对我没有意义.一定有办法!
我的功能是:
void function(const float *, int sizeOfArray){...}
Run Code Online (Sandbox Code Playgroud)
我的载体是:
std::vector<float> myVector(size, val);
Run Code Online (Sandbox Code Playgroud)
我在文档中读到你可以使用myVector [0]作为标准的c ++静态数组操作.
如何将该向量传递给该函数而不必将值复制到新的动态数组?(我想避免为此使用new/delete).
这是......吗?
function(myVector[0], size);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我正在使用C++ 11.
我有一个包含项目的布局列表.它形成一个自定义表.
为了清理表格,我循环遍历所有布局并逐个取出项目.然后删除布局.
// Delete all items
QHBoxLayout* row = NULL;
while( !rowLyts_.isEmpty() && (row = rowLyts_.takeAt(0)) != 0 )
{
QLayoutItem *item;
while ((item = row->takeAt(0)) != 0)
delete item;
delete row;
}
Run Code Online (Sandbox Code Playgroud)
这似乎有效.但是当我再次开始填充表格时,我会看到清洁之前那些物品的"幽灵".大多数时候,他们都在新的对象后面.他们仍然工作.
当您仅使用带有小部件的布局时,也会发生这种情况.
我只是想清除整个布局布局而不删除内容小部件.清理布局的安全方法!
我有一个按钮,可以导入带有类的模块。类 (varClass) 创建一个窗口。
如果我再次单击该按钮,我会尝试以下操作:
if var:
var.toggleUI()
else :
var = varClass()
Run Code Online (Sandbox Code Playgroud)
但打开 Maya 后第一次创建窗口时 var 不存在。我怎样才能让它工作?
qt ×8
c++ ×4
layout ×2
qt4 ×2
alignment ×1
arguments ×1
arrays ×1
c++11 ×1
geometry ×1
glsl ×1
jpeg ×1
linker ×1
linux ×1
math ×1
maya ×1
mel ×1
png ×1
python ×1
qgridlayout ×1
qimage ×1
qlabel ×1
qscrollarea ×1
qt4.7 ×1
qwidget ×1
raytracing ×1
resize ×1
scrollbar ×1
size ×1
stylesheet ×1
suse ×1
translation ×1
vector ×1
widget ×1