• 6450阅读
  • 12回复

[提问]QLineEdit的对象中输入数字用来控制项(此处的项是一个矩形框)的大小? [复制链接]

上一主题 下一主题
离线brucew
 
只看楼主 倒序阅读 楼主  发表于: 2011-12-28
请问各位大侠,如何在QLineEdit的对象中输入数字用来控制项(此处的项是一个矩形框)的大小?
具体描述,基于项的视图,已经画好了一个项,即一个矩形框,并给矩形框设置了属性,点击属性菜单可弹出属性对话框,属性对话框中有两个lineEdit输入框,一个是矩形框的宽度,一个是高度,请问如何实现输入数字来调节矩形框的大小?
离线wxj120bw

只看该作者 1楼 发表于: 2011-12-28
回 楼主(brucew) 的帖子
你为什么要把”项"放到QLineEdit实现呢
离线brucew
只看该作者 2楼 发表于: 2011-12-29
回 1楼(wxj120bw) 的帖子
我想在QLineEdit的对象中输入数字来控制矩形框的大小,输入的数字需要在绘制项的时候用到,我不知道如何获得这个输入的数字,请大侠指教?
离线roywillow

只看该作者 3楼 发表于: 2011-12-29
QLineEdit::text()
QString::toInt()
参考这两个成员函数的用法应该足矣
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线brucew
只看该作者 4楼 发表于: 2011-12-29
回 3楼(roywillow) 的帖子
好的,多谢指教,我尝试一下。
离线brucew
只看该作者 5楼 发表于: 2011-12-29
回 3楼(roywillow) 的帖子
我在项的源文件中给绘制的项(也就是矩形框的宽度和高度)赋了初值,这样可以画出这个矩形框,当我想通过lineEdit输入数字试图改变矩形框大小时就出现了错误,说我设定的宽度(width)是只读的,无法改变,请问大侠该用何种方法解决,请给点思路?
离线roywillow

只看该作者 6楼 发表于: 2011-12-29
估计需要看代码
我想你大概还是需要仔细看文档
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线brucew
只看该作者 7楼 发表于: 2011-12-29
项的属性框源文件:
PropertiesDialog::PropertiesDialog(MyItem *myitem,QWidget *parent) :
    QDialog(parent)
{
    setupUi(this);
    this->myitem =myitem;
    widthLineEdit->setText(myitem->text());
}

void PropertiesDialog::on_buttonBox_accepted()
{
    myitem->setText(widthLineEdit->text());
    myitem->update();
    QDialog::accept();
}

项的头文件:
class MyItem : public QGraphicsItem
{public:
     double width;
     void setText(const QString &text);
     QString text() const;
private:
    QString myText;
}
项的源文件:
MyItem::MyItem()
{
    width=500.0;
}
void MyItem::setText(const QString &text)
{
    myText = text;
    update();
}

QString MyItem::text() const
{
    return myText;
}
void MyItem::paint(QPainter *painter,const QStyleOptionGraphicsItem *,QWidget *)
{
     QRect rect(-400, -300, width, height);
}

我把主要的贴出来了,请大侠指教?
离线brucew
只看该作者 8楼 发表于: 2011-12-29
回 6楼(roywillow) 的帖子
项的属性框源文件:
PropertiesDialog::PropertiesDialog(MyItem *myitem,QWidget *parent) :
    QDialog(parent)
{
    setupUi(this);
    this->myitem =myitem;
    widthLineEdit->setText(myitem->text());
}

void PropertiesDialog::on_buttonBox_accepted()
{
    myitem->setText(widthLineEdit->text());
    myitem->update();
    QDialog::accept();
}

项的头文件:
class MyItem : public QGraphicsItem
{public:
     double width;
     void setText(const QString &text);
     QString text() const;
private:
    QString myText;
}
项的源文件:
MyItem::MyItem()
{
    width=500.0;
}
void MyItem::setText(const QString &text)
{
    myText = text;
    update();
}

QString MyItem::text() const
{
    return myText;
}
void MyItem::paint(QPainter *painter,const QStyleOptionGraphicsItem *,QWidget *)
{
     QRect rect(-400, -300, width, height);
}

我把主要的贴出来了, 本人属于菜鸟级的,请大侠指教?
离线roywillow

只看该作者 9楼 发表于: 2011-12-29
你继承类的width是不是跟父类的width()冲突了呢?
另外Qt提供了Rect的Item,如果我没记错的话
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线brucew
只看该作者 10楼 发表于: 2011-12-29
回 9楼(roywillow) 的帖子
多谢大侠指点,我再看看。
离线brucew
只看该作者 11楼 发表于: 2011-12-29
回 9楼(roywillow) 的帖子
在MyItem.cpp中加入
int MyItem::toInt() const
{
    width=myText.toInt();
}
显示一个错误:assignment of data-member 'MyItem::w' in read-only structure
一个警告:no return statement in function returning non-void
在lineEdit中输入的数字根本无法传送给width,是不是信号-槽机制用的不当,大侠能给提供一个方法吗?
离线roywillow

只看该作者 12楼 发表于: 2011-12-29
真心搞不懂这个问题怎么会让你搞得如此复杂……
想想你是怎么修改窗口大小的吧
警告原因很简单,那个函数返回值被声明为int,但是你却没有任何return,当然这个函数看起来一点用都没有
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个